On Wed, Mar 04, 2026 at 02:57:26PM +0100, Tomas Glozar wrote:
> čt 15. 1. 2026 v 18:28 odesílatel Wander Lairson Costa
> <[email protected]> napsal:
> >
> > The parse_ns_duration() function currently uses prefix matching for
> > detecting time units. This approach is problematic as it silently
> > accepts malformed strings such as "100nsx" or "100us_invalid" by
> > ignoring the trailing characters, leading to potential configuration
> > errors.
> >
> > Switch to using strcmp() for suffix comparison to enforce exact matches.
> > This ensures that the parser strictly validates the time unit and
> > rejects any input containing invalid trailing characters, thereby
> > improving the robustness of the configuration parsing.
> 
> This solution is incorrect. We need to be able to parse deadline
> priority correctly, whose format includes two suffixes:
> 
> d:runtime[us|ms|s]:period[us|ms|s]
> (see manpages)
> 
> and is parsed like this:
> 
> int parse_prio(char *arg, struct sched_attr *sched_param)
> {
> ...
>     switch (arg[0]) {
>     case 'd':
>     case 'D':
>         /* d:runtime:period */
>         if (strlen(arg) < 4)
>             return -1;
> 
>         runtime = get_long_ns_after_colon(arg);
>         if (runtime == INVALID_VAL)
>             return -1;
> 
>         period = get_long_ns_after_colon(&arg[2]);
>         if (period == INVALID_VAL)
>             return -1;
> ...
> 
> Your commit breaks that:
> 
> $ rtla timerlat -P d:10ms:100ms
> Invalid -P priority

You're right, I will fix the bug.

> 
> Tomas
> 


Reply via email to