Skip to content
OpenAdvisories
Unscored CVE-2024-26837 EUVD-2024-24099GHSA-8ppx-vmhm-cxj7

net: bridge: switchdev: Skip MDB replays of deferred events on offload

Published Apr 17, 2024 · Updated May 11, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.8 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.5 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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.

Affected products

VendorProductAffectedFixed
Linux Linux 5.13 6.1.80

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.7.7-1 —
Debian 13 linux 6.7.7-1 —
Debian 12 linux 6.1.82-1 —
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1064.66 —
Ubuntu 22.04 LTS linux +1 5.15.0-138.148 USN-7455-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1082.89 USN-7455-1
Ubuntu 22.04 LTS linux-azure 5.15.0-1087.96 USN-7455-1
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1087.96.1 USN-7455-1
Ubuntu 22.04 LTS linux-gcp 5.15.0-1081.90 USN-7455-1
Ubuntu 22.04 LTS linux-gke +1 5.15.0-1079.85 USN-7455-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1064.72 USN-7455-1
Ubuntu 22.04 LTS linux-ibm 5.15.0-1074.77 USN-7455-1
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1077.83 USN-7455-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1078.83 USN-7455-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1076.77 USN-7455-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1035.35 USN-7455-1
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1023.23 USN-7455-1
Ubuntu 22.04 LTS linux-raspi 5.15.0-1076.79 USN-7455-1
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1046.50 USN-7475-1
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1082.89~20.04.1 USN-7455-5
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1087.96~20.04.1 USN-7455-1
Ubuntu 20.04 LTS linux-azure-fde-5.15 5.15.0-1087.96~20.04.1.1 USN-7455-1
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1081.90~20.04.1 USN-7459-2
Ubuntu 20.04 LTS linux-gke +27 No fix yet —
Ubuntu 20.04 LTS linux-hwe-5.15 +1 5.15.0-138.148~20.04.1 USN-7455-1
Ubuntu 20.04 LTS linux-ibm-5.15 5.15.0-1074.77~20.04.1 —
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1077.83~20.04.1 USN-7459-1
Ubuntu 20.04 LTS linux-oracle-5.15 5.15.0-1079.85~20.04.1 USN-7455-4
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1077.81~20.04.1 —
Ubuntu 18.04 LTS linux-gcp +13 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2002.2 —
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1075.77 USN-7455-3
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1082.91 USN-7455-3
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1082.89+fips1 USN-7455-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1087.96+fips1 USN-7460-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-138.148+fips1 USN-7455-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1081.90+fips1 USN-7455-2
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1039.39~20.04.1 —
ReleasePackageFixed inAdvisory
RHEL 9 bpftool 7.4.0-503.11.1.el9_5 RHSA-2024:9315
RHEL 9 rv +67 5.14.0-503.11.1.el9_5 RHSA-2024:9315
RHEL 8 kernel-rt +12 4.18.0-553.16.1.rt7.357.el8_10 RHSA-2024:5102
RHEL 8 perf +26 4.18.0-553.16.1.el8_10 RHSA-2024:5101
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
RHEL 9.4 EUS bpftool 7.3.0-427.44.1.el9_4 RHSA-2024:9546
RHEL 9.4 EUS rv +64 5.14.0-427.44.1.el9_4 RHSA-2024:9546

AlmaLinux

Errata ↗
ReleasePackageFixed inAdvisory
AlmaLinux 8 kernel-rt +11 4.18.0-553.16.1.rt7.357.el8_10 ALSA-2024:5102
AlmaLinux 8 perf +24 4.18.0-553.16.1.el8_10 ALSA-2024:5101

Rocky Linux

Errata ↗
ReleasePackageFixed inAdvisory
Rocky Linux 8 kernel 4.18.0-553.16.1.el8_10 RXSA-2024:5101, RLSA-2024:5101
Rocky Linux 8 kernel-rt 4.18.0-553.16.1.rt7.357.el8_10 RLSA-2024:5102
ReleasePackageFixed inAdvisory
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.22.1 SUSE-SU-2024:3383-1
SLES 15 SP6 kernel-azure +2 6.4.0-150600.8.11.1 SUSE-SU-2024:3194-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.22.1.150600.12.8.3 SUSE-SU-2024:3383-1
SLES 15 SP5 kernel-64kb +6 5.14.21-150500.55.83.1 SUSE-SU-2024:3569-1
SLES 15 SP5 kernel-azure +2 5.14.21-150500.33.69.1 SUSE-SU-2024:3587-1
SLES 15 SP5 kernel-default-base 5.14.21-150500.55.83.1.150500.6.37.1 SUSE-SU-2024:3569-1
Show 6 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLE Micro 6.0 kernel-default-base 6.4.0-17.1.1.51 SUSE-SU-2025:20044-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0_Update_2 +1 1-1.1 SUSE-SU-2025:20047-1, SUSE-SU-2025:20044-1
SLE Micro 6.0 kernel-rt +1 6.4.0-10.1 SUSE-SU-2025:20047-1
SLE Micro 6.0 kernel-source +2 6.4.0-19.1 SUSE-SU-2025:20044-1
SLE Micro 5.5 kernel-default 5.14.21-150500.55.83.1 SUSE-SU-2024:3569-1
SLE Micro 5.5 kernel-default-base 5.14.21-150500.55.83.1.150500.6.37.1 SUSE-SU-2024:3569-1
SLE Micro 5.5 kernel-rt +1 5.14.21-150500.13.73.1 SUSE-SU-2024:3592-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.22.1 SUSE-SU-2024:3383-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_2 1-150600.1.3.2 SUSE-SU-2024:3195-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_4 1-150600.13.3.3 SUSE-SU-2024:3383-1
SLE Live Patching 15 SP5 kernel-default 5.14.21-150500.55.83.1 SUSE-SU-2024:3569-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_20 +1 1-150500.11.3.1 SUSE-SU-2024:3592-1, SUSE-SU-2024:3569-1
SUSE Real Time Module 15 SP6 kernel-rt +2 6.4.0-150600.10.8.3 SUSE-SU-2024:3195-1
SUSE Real Time Module 15 SP6 kernel-syms-rt 6.4.0-150600.10.8.1 SUSE-SU-2024:3195-1
SUSE Real Time Module 15 SP5 kernel-rt +3 5.14.21-150500.13.73.1 SUSE-SU-2024:3592-1
ReleasePackageFixed inAdvisory
openSUSE Leap 15.6 dtb-aarch64 +10 6.4.0-150600.23.22.1 SUSE-SU-2024:3383-1
openSUSE Leap 15.6 kernel-azure +2 6.4.0-150600.8.11.1 SUSE-SU-2024:3194-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.22.1.150600.12.8.3 SUSE-SU-2024:3383-1
openSUSE Leap 15.6 kernel-rt +2 6.4.0-150600.10.8.3 SUSE-SU-2024:3195-1
openSUSE Leap 15.6 kernel-syms-rt 6.4.0-150600.10.8.1 SUSE-SU-2024:3195-1
openSUSE Leap 15.5 kernel-azure +2 5.14.21-150500.33.69.1 SUSE-SU-2024:3587-1
openSUSE Leap 15.5 kernel-rt +3 5.14.21-150500.13.73.1 SUSE-SU-2024:3592-1
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
openSUSE Leap Micro 5.5 kernel-default 5.14.21-150500.55.83.1 SUSE-SU-2024:3569-1
openSUSE Leap Micro 5.5 kernel-default-base 5.14.21-150500.55.83.1.150500.6.37.1 SUSE-SU-2024:3569-1
openSUSE Leap Micro 5.5 kernel-rt 5.14.21-150500.13.73.1 SUSE-SU-2024:3592-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.1.82-99.168 1.0-0.amzn2023 ALAS2023-2024-784
Amazon Linux 2023 perf +14 6.1.82-99.168.amzn2023 ALAS2023-2024-784

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 2 (CBL-Mariner) kernel No fix yet —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 bpftool 7.4.0-503.11.1.el9_5 ELSA-2024-9315
Oracle Linux 9 rv +28 5.14.0-503.11.1.el9_5 ELSA-2024-9315
Oracle Linux 8 perf +19 4.18.0-553.16.1.el8_10 ELSA-2024-5101

Advisories 31

References