net: bridge: mcast: properly convert mglist to rcu
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.158, 6.12.111, 6.18.53, 7.2.7
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: net: bridge: mcast: properly convert mglist to rcu Sashiko reported a bug [1] that br_multicast_del_port_group unlists the port group not using proper rcu helper that preserves the next pointer and after that immediately frees the port group without waiting for rcu grace period. The only rcu walker of mglist is br_multicast_list_adjacent() and it turns out that function has always been buggy because mglist was never properly converted to RCU. Fix it by converting it to rcu and moving its initialization after eth_addr's. Initializing p->next can use RCU_INIT_POINTER because we have a barrier from the hlist_add_head_rcu call later, besides we're initializing an unpublished structure anyway. [1] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260826014200.362304-1-littleddfu%40gmail.com
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 · fixed in 37cb9a81600da8250f24e25edc07253b62353cbe; From 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 · fixed in 98247c8264d2076f81fa114bdfa2c2271953ac7c; From 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 · fixed in 38ab2a435001a3c4dbeb70a52f5921e1ccd66f55; From 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 · fixed in f7bf57e94a5d6214b87be08486cb33836fbfa573; From 07f8ac4a1e26e8283542cdaf658a6e2a12fd6980 · fixed in 4b772869a1e5f9da5cef5b9c722ec0aa424ee0a0
- Linux Linux
3.16
- KernelLinux
From 3.16.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7