[PATCH net 0/3] bridge: Fix sleep in atomic context

Ido Schimmel <[email protected]> Tue, 26 May 2026 09:48:15 +0300
Newsgroups gmane.linux.network.bridge
Message-ID <20260526064818.272516-1-idosch__10295.5621596024$1779778165$gmane$org@nvidia.com>
Under certain circumstances the bridge driver can call
dev_set_promiscuity() while holding the bridge spin lock. This is a
problem as dev_set_promiscuity() might sleep.

Patches #1-#2 fix the problem in the netlink and sysfs configuration
paths by only taking the lock where it is actually needed, thereby
avoiding calling dev_set_promiscuity() from an atomic context.

Patch #3 adds test cases for both configuration paths in rtnetlink.sh
which already includes test cases for similar issues.

Note that dev_set_promiscuity() can sleep either when it takes the net
device mutex or when calling netif_rx_mode_sync(). I encountered the
problem with the latter, but blamed the former since it came earlier.

Ido Schimmel (3):
  bridge: Fix sleep in atomic context in netlink path
  bridge: Fix sleep in atomic context in sysfs path
  selftests: rtnetlink: Add bridge promiscuity tests

 net/bridge/br_netlink.c                  | 17 +++----
 net/bridge/br_switchdev.c                |  1 -
 net/bridge/br_sysfs_if.c                 | 30 ++++++++---
 tools/testing/selftests/net/rtnetlink.sh | 63 ++++++++++++++++++++++++
 4 files changed, 92 insertions(+), 19 deletions(-)

-- 
2.54.0