In the Linux kernel, the following vulnerability has been resolved:
net: bridge: switchdev: Skip MDB replays of deferred events on offload
Before this change, generation of the list of MDB events to replay would race against the creation of new group memberships, either from the IGMP/MLD snooping logic or from user configuration.
While new memberships are immediately visible to walkers of br->mdb_list, the notification of their existence to switchdev event subscribers is deferred until a later point in time. So if a replay list was generated during a time that overlapped with such a window, it would also contain a replay of the not-yet-delivered event.
The driver would thus receive two copies of what the bridge internally considered to be one single event. On destruction of the bridge, only a single membership deletion event was therefore sent. As a consequence of this, drivers which reference count memberships (at least DSA), would be left with orphan groups in their hardware database when the bridge was destroyed.
This is only an issue when replaying additions. While deletion events may still be pending on the deferred queue, they will already have been removed from br->mdb_list, so no duplicates can be generated in that scenario.
To a user this meant that old group memberships, from a bridge in which a port was previously attached, could be reanimated (in hardware) when the port joined a new bridge, without the new bridge's knowledge.
For example, on an mv88e6xxx system, create a snooping bridge and immediately add a port to it:
root@infix-06-0b-00:~$ ip link add dev br0 up type bridge mcast_snooping 1 && \ > ip link set dev x3 up master br0
And then destroy the bridge:
root@infix-06-0b-00:~$ ip link del dev br0 root@infix-06-0b-00:~$ mvls atu ADDRESS FID STATE Q F 0 1 2 3 4 5 6 7 8 9 a DEV:0 Marvell 88E6393X 33:33:00:00:00:6a 1 static - - 0 . . . . . . . . . . 33:33:ff:87:e4:3f 1 static - - 0 . . . . . . . . . . ff:ff:ff:ff:ff:ff 1 static - - 0 1 2 3 4 5 6 7 8 9 a root@infix-06-0b-00:~$
The two IPv6 groups remain in the hardware database because the port (x3) is notified of the host's membership twice: once via the original event and once via a replay. Since only a single delete notification is sent, the count remains at 1 when the bridge is destroyed.
Then add the same port (or another port belonging to the same hardware domain) to a new bridge, this time with snooping disabled:
root@infix-06-0b-00:~$ ip link add dev br1 up type bridge mcast_snooping 0 && \ > ip link set dev x3 up master br1
All multicast, including the two IPv6 groups from br0, should now be flooded, according to the policy of br1. But instead the old memberships are still active in the hardware database, causing the switch to only forward traffic to those groups towards the CPU (port 0).
Eliminate the race in two steps:
1. Grab the write-side lock of the MDB while generating the replay list.
This prevents new memberships from showing up while we are generating the replay list. But it leaves the scenario in which a deferred event was already generated, but not delivered, before we grabbed the lock. Therefore:
2. Make sure that no deferred version of a replay event is already enqueued to the switchdev deferred queue, before adding it to the replay list, when replaying additions.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-docUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-debugUpgrade kernel-debug-develUpgrade kernel-rt-debug-kvmUpgrade kernel-modules-extraUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-zfcpdump-develUpgrade kernel-debug-modulesUpgrade kernel-develUpgrade kernel-debug-coreUpgrade kernel-modulesUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-modulesUpgrade kernel-headersUpgrade kernel-zfcpdumpUpgrade kernel-tools-libsUpgrade kernel-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rt-coreUpgrade perfUpgrade kernel-debugUpgrade kernel-rt-debug-develUpgrade kernel-cross-headersUpgrade kernel-rt-modules-extraUpgrade python3-perfUpgrade kernel-rt-debug-coreUpgrade kernel-zfcpdump-coreUpgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade kernel-rt-kvmUpgrade kernel-rtUpgrade kernel-tools-libs-develUpgrade kernelUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-develUpgrade bpftool | Aug 12, 2024 | Apr 17, 2024 |
| Amazon_linux_2023 | — | Upgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-modules-extraUpgrade kernel-develUpgrade kernelUpgrade kernel-libbpf-develUpgrade python3-perf-debuginfoUpgrade python3-perfUpgrade kernel-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel-libbpfUpgrade kernel-tools-debuginfoUpgrade kernel-modules-extra-commonUpgrade bpftool-debuginfoUpgrade kernel-livepatch-6.1.82-99.168Upgrade kernel-toolsUpgrade bpftoolUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade kernel-libbpf-static | Feb 17, 2025 | Apr 17, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Apr 17, 2024 |
| Oracle_linux | — | Upgrade kernel | Aug 16, 2024 | Apr 17, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Aug 12, 2024 | Apr 17, 2024 |
| Rocky_linux | — | Upgrade python3-perf-debuginfoUpgrade kernel-rt-debug-coreUpgrade kernel-rt-develUpgrade kernel-rt-modulesUpgrade kernel-debug-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-debuginfoUpgrade kernel-toolsUpgrade kernel-rt-debuginfoUpgrade bpftoolUpgrade kernel-tools-libsUpgrade perfUpgrade kernel-rt-kvmUpgrade kernel-rtUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libs-develUpgrade python3-perfUpgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-cross-headersUpgrade kernel-rt-coreUpgrade kernel-debug-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debug-coreUpgrade kernel-rt-debug-modulesUpgrade kernel-debugUpgrade kernelUpgrade kernel-rt-debug-kvmUpgrade kernel-develUpgrade kernel-debuginfoUpgrade kernel-rt-debug-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modulesUpgrade perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-debug-develUpgrade kernel-rt-debugUpgrade kernel-modules-extraUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-core | Aug 22, 2024 | Apr 17, 2024 |
| Suse | — | Upgrade reiserfs-kmp-64kbUpgrade dtb-hisiliconUpgrade ocfs2-kmp-64kbUpgrade gfs2-kmp-azureUpgrade dtb-freescaleUpgrade kernel-rt-vdsoUpgrade kernel-source-azureUpgrade kernel-rt_debug-develUpgrade kernel-zfcpdumpUpgrade dtb-allwinnerUpgrade kernel-default-livepatchUpgrade kernel-azureUpgrade kernel-source-vanillaUpgrade kernel-syms-rtUpgrade kernel-rt-livepatch-develUpgrade dtb-lgUpgrade dtb-alteraUpgrade dtb-marvellUpgrade kernel-default-develUpgrade kernel-docs-htmlUpgrade ocfs2-kmp-defaultUpgrade dtb-socionextUpgrade dtb-broadcomUpgrade kernel-rt_debugUpgrade reiserfs-kmp-rtUpgrade kernel-rt-optionalUpgrade kselftests-kmp-azureUpgrade gfs2-kmp-64kbUpgrade kernel-azure-vdsoUpgrade dtb-amazonUpgrade dtb-appleUpgrade kernel-64kb-livepatch-develUpgrade kernel-devel-azureUpgrade dtb-renesasUpgrade gfs2-kmp-rtUpgrade kernel-symsUpgrade kernel-kvmsmall-vdsoUpgrade kernel-azure-extraUpgrade dtb-caviumUpgrade dtb-exynosUpgrade kernel-debugUpgrade reiserfs-kmp-defaultUpgrade kernel-64kb-optionalUpgrade kernel-source-rtUpgrade ocfs2-kmp-azureUpgrade ocfs2-kmp-rtUpgrade kernel-debug-develUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-amdUpgrade kselftests-kmp-64kbUpgrade kernel-64kbUpgrade dlm-kmp-64kbUpgrade kernel-sourceUpgrade kernel-azure-optionalUpgrade kernel-default-livepatch-develUpgrade kernel-kvmsmallUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-azureUpgrade kernel-rt_debug-vdsoUpgrade kernel-debug-vdsoUpgrade kselftests-kmp-defaultUpgrade kernel-defaultUpgrade kernel-rtUpgrade kernel-default-extraUpgrade dtb-apmUpgrade dtb-mediatekUpgrade cluster-md-kmp-rtUpgrade kernel-obs-buildUpgrade kernel-64kb-develUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-defaultUpgrade gfs2-kmp-defaultUpgrade kernel-azure-livepatch-develUpgrade kernel-macrosUpgrade dtb-qcomUpgrade reiserfs-kmp-azureUpgrade kernel-rt-extraUpgrade dlm-kmp-rtUpgrade dlm-kmp-defaultUpgrade kernel-obs-qaUpgrade kernel-default-vdsoUpgrade kernel-docsUpgrade kernel-rt-livepatchUpgrade kernel-default-base-rebuildUpgrade kernel-azure-develUpgrade dtb-amlogicUpgrade dtb-armUpgrade cluster-md-kmp-64kbUpgrade kernel-64kb-extraUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-develUpgrade kernel-develUpgrade kernel-syms-azureUpgrade kernel-default-optionalUpgrade kernel-devel-rtUpgrade kernel-default-baseUpgrade kernel-debug-livepatch-develUpgrade dtb-xilinxUpgrade dtb-sprdUpgrade dtb-rockchipUpgrade dtb-nvidiaUpgrade dlm-kmp-azure | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-gkeopUpgrade linux-image-intelUpgrade linux-image-fipsUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-5.15.0-1023-nvidia-tegra-igxUpgrade linux-image-nvidiaUpgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1023-nvidia-tegra-igx-rtUpgrade linux-image-raspi-nolpaeUpgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-1079-oracleUpgrade linux-image-5.15.0-1076-raspiUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-generic-64kUpgrade linux-image-genericUpgrade linux-image-generic-lpaeUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-aws-lts-22.04Upgrade linux-image-virtualUpgrade linux-image-5.15.0-1082-aws-fipsUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-5.15.0-1081-gcp-fipsUpgrade linux-image-5.15.0-138-fipsUpgrade linux-image-5.15.0-1064-gkeopUpgrade linux-image-nvidia-tegraUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1077-intel-iotgUpgrade linux-image-5.15.0-138-genericUpgrade linux-image-5.15.0-1082-awsUpgrade linux-image-gke-5.15Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-5.15.0-1087-azureUpgrade linux-image-5.15.0-1074-ibmUpgrade linux-image-lowlatencyUpgrade linux-image-5.15.0-138-lowlatencyUpgrade linux-image-aws-fipsUpgrade linux-image-5.15.0-1046-xilinx-zynqmpUpgrade linux-image-azure-fdeUpgrade linux-image-5.15.0-138-lowlatency-64kUpgrade linux-image-ibmUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.15.0-1082-realtimeUpgrade linux-image-raspiUpgrade linux-image-gcp-fipsUpgrade linux-image-azure-fipsUpgrade linux-image-5.15.0-1079-gkeUpgrade linux-image-5.15.0-1035-nvidia-tegraUpgrade linux-image-oracleUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-kvmUpgrade linux-image-5.15.0-1078-kvmUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.15.0-1076-nvidiaUpgrade linux-image-gkeop-5.15Upgrade linux-image-oem-20.04dUpgrade linux-image-5.15.0-138-generic-64kUpgrade linux-image-gcpUpgrade linux-image-azureUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-5.15.0-138-generic-lpaeUpgrade linux-image-oem-20.04cUpgrade linux-image-realtimeUpgrade linux-image-gkeUpgrade linux-image-5.15.0-1081-gcpUpgrade linux-image-5.15.0-1076-nvidia-lowlatencyUpgrade linux-image-5.15.0-1035-nvidia-tegra-rtUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-azure-cvmUpgrade linux-image-5.15.0-1087-azure-fipsUpgrade linux-image-awsUpgrade linux-image-5.15.0-1075-intel-iot-realtimeUpgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-1087-azure-fde | Feb 11, 2025 | Apr 17, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 14, 2025 | Apr 17, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub