Skip to content
OpenAdvisories
Unscored CVE-2025-21986 EUVD-2025-9334GHSA-vcr5-6jvw-92h4

net: switchdev: Convert blocking notification chain to a raw one

Published Apr 1, 2025 · Updated Nov 5, 2026 · Assigned by Linux

Vendor: Linux Product: Linux 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.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 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-azure-nvidia Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 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.19 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-6.8 Package: linux-intel Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-lowlatency Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra 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.11 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

In the Linux kernel, the following vulnerability has been resolved:

net: switchdev: Convert blocking notification chain to a raw one

A blocking notification chain uses a read-write semaphore to protect the
integrity of the chain. The semaphore is acquired for writing when
adding / removing notifiers to / from the chain and acquired for reading
when traversing the chain and informing notifiers about an event.

In case of the blocking switchdev notification chain, recursive
notifications are possible which leads to the semaphore being acquired
twice for reading and to lockdep warnings being generated [1].

Specifically, this can happen when the bridge driver processes a
SWITCHDEV_BRPORT_UNOFFLOADED event which causes it to emit notifications
about deferred events when calling switchdev_deferred_process().

Fix this by converting the notification chain to a raw notification
chain in a similar fashion to the netdev notification chain. Protect
the chain using the RTNL mutex by acquiring it when modifying the chain.
Events are always informed under the RTNL mutex, but add an assertion in
call_switchdev_blocking_notifiers() to make sure this is not violated in
the future.

Maintain the "blocking" prefix as events are always emitted from process
context and listeners are allowed to block.

[1]:
WARNING: possible recursive locking detected
6.14.0-rc4-custom-g079270089484 #1 Not tainted
--------------------------------------------
ip/52731 is trying to acquire lock:
ffffffff850918d8 ((switchdev_blocking_notif_chain).rwsem){++++}-{4:4}, at: blocking_notifier_call_chain+0x58/0xa0

but task is already holding lock:
ffffffff850918d8 ((switchdev_blocking_notif_chain).rwsem){++++}-{4:4}, at: blocking_notifier_call_chain+0x58/0xa0

other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock((switchdev_blocking_notif_chain).rwsem);
lock((switchdev_blocking_notif_chain).rwsem);

*** DEADLOCK ***
May be due to missing lock nesting notation
3 locks held by ip/52731:
#0: ffffffff84f795b0 (rtnl_mutex){+.+.}-{4:4}, at: rtnl_newlink+0x727/0x1dc0
#1: ffffffff8731f628 (&net->rtnl_mutex){+.+.}-{4:4}, at: rtnl_newlink+0x790/0x1dc0
#2: ffffffff850918d8 ((switchdev_blocking_notif_chain).rwsem){++++}-{4:4}, at: blocking_notifier_call_chain+0x58/0xa0

stack backtrace:
...
? __pfx_down_read+0x10/0x10
? __pfx_mark_lock+0x10/0x10
? __pfx_switchdev_port_attr_set_deferred+0x10/0x10
blocking_notifier_call_chain+0x58/0xa0
switchdev_port_attr_notify.constprop.0+0xb3/0x1b0
? __pfx_switchdev_port_attr_notify.constprop.0+0x10/0x10
? mark_held_locks+0x94/0xe0
? switchdev_deferred_process+0x11a/0x340
switchdev_port_attr_set_deferred+0x27/0xd0
switchdev_deferred_process+0x164/0x340
br_switchdev_port_unoffload+0xc8/0x100 [bridge]
br_switchdev_blocking_event+0x29f/0x580 [bridge]
notifier_call_chain+0xa2/0x440
blocking_notifier_call_chain+0x6e/0xa0
switchdev_bridge_port_unoffload+0xde/0x1a0
...

Affected products

VendorProductAffectedFixed
Linux Linux 6.1.80 – < 6.1.132, 6.6.19 – < 6.6.84, 6.7.7 – < 6.8, 6.8 6.1.132

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.12.20-1 —
Debian 13 linux 6.12.20-1 —
Debian 12 linux 6.1.133-1 DSA-5900-1
Debian 11 linux-6.1 6.1.137-1~deb11u1 DLA-4193-1
ReleasePackageFixed inAdvisory
Ubuntu 24.04 LTS linux 6.8.0-84.84 USN-7764-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1039.41 USN-7764-1
Ubuntu 24.04 LTS linux-azure 6.8.0-1038.44 USN-7802-1
Ubuntu 24.04 LTS linux-azure-6.11 6.11.0-1018.18~24.04.1 USN-7628-1
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1025.27 USN-7809-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1040.42 USN-7764-1
Ubuntu 24.04 LTS linux-gcp-6.11 6.11.0-1016.16~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1036.40 USN-7764-1
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1023.25 USN-7764-1
Ubuntu 24.04 LTS linux-hwe-6.11 6.11.0-28.28~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1037.37 USN-7779-1
Ubuntu 24.04 LTS linux-intel +4 No fix yet —
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-84.84.1 USN-7764-1
Ubuntu 24.04 LTS linux-lowlatency-hwe-6.11 6.11.0-1015.16~24.04.2 USN-7605-2
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1039.42 USN-7765-1
Ubuntu 24.04 LTS linux-nvidia-6.11 6.11.0-1012.12 —
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1039.42.1 USN-7765-1
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1010.10 —
Ubuntu 24.04 LTS linux-oem-6.11 6.11.0-1024.24 USN-7606-1
Ubuntu 24.04 LTS linux-oracle 6.8.0-1037.38 USN-7801-2
Ubuntu 24.04 LTS linux-raspi 6.8.0-1039.43 USN-7790-1
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1018.19 —
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1039.41~22.04.1 USN-7766-1
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1036.42~22.04.1 USN-7802-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1040.42~22.04.1 USN-7766-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-85.85~22.04.1 USN-7801-1, USN-7764-2
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1037.37~22.04.1 USN-7779-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-84.84.1~22.04.1 USN-7764-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1039.42~22.04.1 USN-7765-1
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1037.38~22.04.1 USN-7801-3
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-84.84~22.04.1 —
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Show 3 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2030.31 USN-7800-1
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1034.35 USN-7767-1
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1034.35~22.04.1 USN-7767-2
Ubuntu Pro FIPS-updates 24.04 LTS linux-aws-fips 6.8.0-1039.41+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-azure-fips 6.8.0-1040.46+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-84.84+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-gcp-fips 6.8.0-1040.42+fips1 —

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.1.132-147.221 1.0-0.amzn2023 ALAS2023-2025-959
Amazon Linux 2023 perf +14 6.1.132-147.221.amzn2023 ALAS2023-2025-959

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-101.33.4.3.el10uek ELSA-2025-20530, ELSA-2025-20480

Advisories 24

References