Re: [PATCH v3 12/18] rtla: Enforce exact match for time unit suffixes

From: Wander Lairson Costa

Date: Mon Mar 09 2026 - 13:21:01 EST


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
> <wander@xxxxxxxxxx> 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
>