Re: [PATCH net v3] net: bridge: fix soft lockup in br_multicast_query_expired()

Nikolay Aleksandrov <[email protected]>
Newsgroups gmane.linux.network.bridge
Message-ID <7641f60d-2d34-4e2c-a467-07cfaba970a9__4818.59127046249$1755071437$gmane$org@blackwall.org>
On 8/13/25 05:10, Wang Liang wrote:
> When set multicast_query_interval to a large value, the local variable
> 'time' in br_multicast_send_query() may overflow. If the time is smaller
> than jiffies, the timer will expire immediately, and then call mod_timer()
> again, which creates a loop and may trigger the following soft lockup
> issue.
> 
>    watchdog: BUG: soft lockup - CPU#1 stuck for 221s! [rb_consumer:66]
>    CPU: 1 UID: 0 PID: 66 Comm: rb_consumer Not tainted 6.16.0+ #259 PREEMPT(none)
>    Call Trace:
>     <IRQ>
>     __netdev_alloc_skb+0x2e/0x3a0
>     br_ip6_multicast_alloc_query+0x212/0x1b70
>     __br_multicast_send_query+0x376/0xac0
>     br_multicast_send_query+0x299/0x510
>     br_multicast_query_expired.constprop.0+0x16d/0x1b0
>     call_timer_fn+0x3b/0x2a0
>     __run_timers+0x619/0x950
>     run_timer_softirq+0x11c/0x220
>     handle_softirqs+0x18e/0x560
>     __irq_exit_rcu+0x158/0x1a0
>     sysvec_apic_timer_interrupt+0x76/0x90
>     </IRQ>
> 
> This issue can be reproduced with:
>    ip link add br0 type bridge
>    echo 1 > /sys/class/net/br0/bridge/multicast_querier
>    echo 0xffffffffffffffff >
>    	/sys/class/net/br0/bridge/multicast_query_interval
>    ip link set dev br0 up
> 
> The multicast_startup_query_interval can also cause this issue. Similar to
> the commit 99b40610956a ("net: bridge: mcast: add and enforce query
> interval minimum"), add check for the query interval maximum to fix this
> issue.
> 
> Link: https://lore.kernel.org/netdev/[email protected]/
> Link: https://lore.kernel.org/netdev/[email protected]/
> Fixes: d902eee43f19 ("bridge: Add multicast count/interval sysfs entries")
> Suggested-by: Nikolay Aleksandrov <[email protected]>
> Signed-off-by: Wang Liang <[email protected]>
> ---
>   net/bridge/br_multicast.c | 16 ++++++++++++++++
>   net/bridge/br_private.h   |  2 ++
>   2 files changed, 18 insertions(+)
> 

Acked-by: Nikolay Aleksandrov <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.