]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net_sched: sch_tfs: implement lockless etf_dump()
authorEric Dumazet <edumazet@google.com>
Thu, 18 Apr 2024 07:32:40 +0000 (07:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Apr 2024 10:34:07 +0000 (11:34 +0100)
Instead of relying on RTNL, codel_dump() can use READ_ONCE()
annotations.

There is no etf_change() yet, this patch imply aligns
this qdisc with others.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_etf.c

index 2e4bef713b6abc4aad836bc9248796c20a22e476..c74d778c32a1eda639650df4d1d103c5338f14e6 100644 (file)
@@ -467,15 +467,15 @@ static int etf_dump(struct Qdisc *sch, struct sk_buff *skb)
        if (!nest)
                goto nla_put_failure;
 
-       opt.delta = q->delta;
-       opt.clockid = q->clockid;
-       if (q->offload)
+       opt.delta = READ_ONCE(q->delta);
+       opt.clockid = READ_ONCE(q->clockid);
+       if (READ_ONCE(q->offload))
                opt.flags |= TC_ETF_OFFLOAD_ON;
 
-       if (q->deadline_mode)
+       if (READ_ONCE(q->deadline_mode))
                opt.flags |= TC_ETF_DEADLINE_MODE_ON;
 
-       if (q->skip_sock_check)
+       if (READ_ONCE(q->skip_sock_check))
                opt.flags |= TC_ETF_SKIP_SOCK_CHECK;
 
        if (nla_put(skb, TCA_ETF_PARMS, sizeof(opt), &opt))