Re: [PATCH net] bridge: mcast: Fix a false positive lockdep splat
Nikolay Aleksandrov <[email protected]> Wed, 29 Apr 2026 10:32:30 +0300
| Newsgroups | dev.linux.lists.bridge,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 28/04/2026 17:10, Paolo Abeni wrote: > On 4/26/26 3:34 PM, Ido Schimmel wrote: >> Connecting two bridges on the same system [1] can result in a lockdep >> splat [2]. >> >> The report is a false positive. Multicast queries are built and >> transmitted under the bridge multicast lock. When the outgoing port of >> one bridge is configured on top of another bridge, the transmit path >> re-enters bridge code and acquires the other bridge's multicast lock in >> order to snoop the query. Both lock instances share a single lockdep >> class, so lockdep flags the nested acquisition as an AA deadlock. >> >> Giving each bridge its own lock class will not solve the problem: the >> reverse topology would produce an ABBA splat with the same pair of >> classes. It also consumes a lockdep key per bridge. >> >> Instead, fix the problem by deferring the transmission of the queries to >> a workqueue. Build the skb and update querier state under the lock as >> before, then enqueue the skb on a per multicast context queue and >> schedule the work. > > I must admit that introducing an additional WQ to fix a false positive > feels a bit overkill to me - even if I can't think of a better solution > on top of my head. > I don't have a simpler way to fix it either, and we've had multiple reports of this false positive in the past. It's just another job on the system wq and if Ido limits the queue, IMO should be fine. Cheers, Nik