linux-stable/net
Wang Liang 34171b9e53 net: bridge: fix soft lockup in br_multicast_query_expired()
[ Upstream commit d1547bf460 ]

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 99b4061095 ("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/20250806094941.1285944-1-wangliang74@huawei.com/
Link: https://lore.kernel.org/netdev/20250812091818.542238-1-wangliang74@huawei.com/
Fixes: d902eee43f ("bridge: Add multicast count/interval sysfs entries")
Suggested-by: Nikolay Aleksandrov <razor@blackwall.org>
Signed-off-by: Wang Liang <wangliang74@huawei.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/20250813021054.1643649-1-wangliang74@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-08-28 16:24:37 +02:00
..
6lowpan
9p
802
8021q net: vlan: fix VLAN 0 refcount imbalance of toggling filtering during runtime 2025-08-28 16:24:02 +02:00
appletalk net: appletalk: Fix use-after-free in AARP proxy probe 2025-08-28 16:24:04 +02:00
atm
ax25
batman-adv
bluetooth Bluetooth: L2CAP: Fix attempting to adjust outgoing MTU 2025-08-28 16:24:02 +02:00
bpf
bpfilter
bridge net: bridge: fix soft lockup in br_multicast_query_expired() 2025-08-28 16:24:37 +02:00
caif caif: reduce stack size, again 2025-08-28 16:24:07 +02:00
can
ceph
core netpoll: prevent hanging NAPI when netcons gets enabled 2025-08-28 16:24:13 +02:00
dcb
dccp
dns_resolver
dsa
ethernet
ethtool
hsr net, hsr: reject HSR frame if skb can't hold tag 2025-08-28 16:24:30 +02:00
ieee802154
ife
ipv4 net: ipv4: fix incorrect MTU in broadcast routes 2025-08-28 16:24:20 +02:00
ipv6 ipv6: sr: Fix MAC comparison to be constant-time 2025-08-28 16:24:30 +02:00
iucv
kcm
key
l2tp
l3mdev
lapb
llc
mac80211 wifi: mac80211: don't complete management TX on SAE commit 2025-08-28 16:24:21 +02:00
mac802154
mctp net: mctp: Prevent duplicate binds 2025-08-28 16:24:20 +02:00
mpls
mptcp mptcp: disable add_addr retransmission when timeout is 0 2025-08-28 16:24:35 +02:00
ncsi net: ncsi: Fix buffer overflow in fetching version id 2025-08-28 16:24:22 +02:00
netfilter netfilter: ctnetlink: fix refcount leak on table dump 2025-08-28 16:24:16 +02:00
netlabel
netlink netlink: avoid infinite retry looping in netlink_unicast() 2025-08-28 16:24:15 +02:00
netrom
nfc
nsh
openvswitch
packet net/packet: fix a race in packet_set_ring() and packet_notifier() 2025-08-28 16:24:14 +02:00
phonet
psample
qrtr
rds
rfkill
rose
rxrpc
sched sch_htb: make htb_deactivate() idempotent 2025-08-28 16:24:33 +02:00
sctp sctp: linearize cloned gso packets in sctp_rcv 2025-08-28 16:24:16 +02:00
smc
strparser
sunrpc
switchdev
tipc
tls bpf, ktls: Fix data corruption when using bpf_msg_pop_data() in ktls 2025-08-28 16:24:07 +02:00
unix
vmw_vsock vsock: Do not allow binding to VMADDR_PORT_ANY 2025-08-28 16:24:14 +02:00
wireless wifi: cfg80211: reject HTC bit for management frames 2025-08-28 16:24:20 +02:00
x25
xdp
xfrm
compat.c
devres.c
Kconfig
Makefile
socket.c
sysctl_net.c