On Mon, May 27, 2024 at 5:40 PM Vladimir Oltean <vladimir.oltean@xxxxxxx> wrote: > > In commit b5b73b26b3ca ("taprio: Fix allowing too small intervals"), a > comparison of user input against length_to_duration(q, ETH_ZLEN) was > introduced, to avoid RCU stalls due to frequent hrtimers. > > The implementation of length_to_duration() depends on q->picos_per_byte > being set for the link speed. The blamed commit in the Fixes: tag has > moved this too late, so the checks introduced above are ineffective. > The q->picos_per_byte is zero at parse_taprio_schedule() -> > parse_sched_list() -> parse_sched_entry() -> fill_sched_entry() time. > > Move the taprio_set_picos_per_byte() call as one of the first things in > taprio_change(), before the bulk of the netlink attribute parsing is > done. That's because it is needed there. > > Add a selftest to make sure the issue doesn't get reintroduced. > > Fixes: 09dbdf28f9f9 ("net/sched: taprio: fix calculation of maximum gate durations") > Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx> Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx> Thanks!