From: Eric Dumazet Date: Wed, 13 May 2026 08:08:52 +0000 (+0000) Subject: net: ioam6: no longer acquire qdisc spinlock while calling qdisc_qstats_qlen_backlog() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3f3c8a4d1f671b5d661097e0c80517d523c9f61;p=thirdparty%2Flinux.git net: ioam6: no longer acquire qdisc spinlock while calling qdisc_qstats_qlen_backlog() Recent changes in qdisc_qstats_qlen_backlog() and friends make it safe to use locklessly. Signed-off-by: Eric Dumazet Reviewed-by: Toke Høiland-Jørgensen Link: https://patch.msgid.link/20260513080853.1383975-3-edumazet@google.com Signed-off-by: Jakub Kicinski --- diff --git a/net/ipv6/ioam6.c b/net/ipv6/ioam6.c index e963a71858a78..943861a5581ee 100644 --- a/net/ipv6/ioam6.c +++ b/net/ipv6/ioam6.c @@ -800,7 +800,7 @@ static void __ioam6_fill_trace_data(struct sk_buff *skb, /* queue depth */ if (trace->type.bit6) { struct netdev_queue *queue; - struct Qdisc *qdisc; + const struct Qdisc *qdisc; __u32 qlen, backlog; if (dev->flags & IFF_LOOPBACK || @@ -810,9 +810,7 @@ static void __ioam6_fill_trace_data(struct sk_buff *skb, queue = skb_get_tx_queue(dev, skb); qdisc = rcu_dereference(queue->qdisc); - spin_lock_bh(qdisc_lock(qdisc)); qdisc_qstats_qlen_backlog(qdisc, &qlen, &backlog); - spin_unlock_bh(qdisc_lock(qdisc)); *(__be32 *)data = cpu_to_be32(backlog); }