
CVE catalog
CVE-2023-54149
linux: CVE-2023-54149
- Severity
- Medium · CVSS 5.8
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Published
- Source
- [NVD] · [CVE record]
- EPSS
- 0.25% · Oct 25, 2026
In the Linux kernel, the following vulnerability has been resolved: net: dsa: avoid suspicious RCU usage for synced VLAN-aware MAC addresses When using the felix driver (the only one which supports UC filtering and MC filtering) as a DSA master for a random other DSA switch, one can see the following stack trace when the downstream switch ports join a VLAN-aware bridge: ============================= WARNING: suspicious RCU usage ----------------------------- net/8021q/vlan_core.c:238 suspicious rcu_dereference_protected() usage! stack backtrace: Workqueue: dsa_ordered dsa_slave_switchdev_event_work Call trace: lockdep_rcu_suspicious+0x170/0x210 vlan_for_each+0x8c/0x188 dsa_slave_sync_uc+0x128/0x178 __hw_addr_sync_dev+0x138/0x158 dsa_slave_set_rx_mode+0x58/0x70 __dev_set_rx_mode+0x88/0xa8 dev_uc_add+0x74/0xa0 dsa_port_bridge_host_fdb_add+0xec/0x180 dsa_slave_switchdev_event_work+0x7c/0x1c8 process_one_work+0x290/0x568 What it's saying is that vlan_for_each() expects rtnl_lock() context and it's not getting it, when it's called from the DSA master's ndo_set_rx_mode(). The caller of that - dsa_slave_set_rx_mode() - is the slave DSA interface's dsa_port_bridge_host_fdb_add() which comes from the deferred dsa_slave_switchdev_event_work(). We went to great lengths to avoid the rtnl_lock() context in that call path in commit 0faf890fc519 ("net: dsa: drop rtnl_lock from dsa_slave_switchdev_event_work"), and calling rtnl_lock() is simply not an option due to the possibility of deadlocking when calling dsa_flush_workqueue() from the call paths that do hold rtnl_lock() - basically all of them. So, when the DSA master calls vlan_for_each() from its ndo_set_rx_mode(), the state of the 8021q driver on this device is really not protected from concurrent access by anything. Looking at net/8021q/, I don't think that vlan_info->vid_list was particularly designed with RCU traversal in mind, so introducing an RCU read-side form of vlan_for_each() - vlan_for_each_rcu() - won't be so easy, and it also wouldn't be exactly what we need anyway. In general I believe that the solution isn't in net/8021q/ anyway; vlan_for_each() is not cut out for this task. DSA doesn't need rtnl_lock() to be held per se - since it's not a netdev state change that we're blocking, but rather, just concurrent additions/removals to a VLAN list. We don't even need sleepable context - the callback of vlan_for_each() just schedules deferred work. The proposed escape is to remove the dependency on vlan_for_each() and to open-code a non-sleepable, rtnl-free alternative to that, based on copies of the VLAN list modified from .ndo_vlan_rx_add_vid() and .ndo_vlan_rx_kill_vid().
Vulnerable and fixed packages
Distribution-reported package versions and fixes. These do not depend on matching against the OpenFactory package catalog.
| Distribution | Package | Release | Version | Status |
|---|---|---|---|---|
| Debian | linux | sid | 7.2.12-1 | fixed |
| Debian | linux | forky | 7.2.12-1 | fixed |
| Debian | linux | trixie | 6.12.107-1 | fixed |
| Debian | linux | trixie-security | 6.12.113-1 | fixed |
| Debian | linux | bookworm | 6.1.176-1 | not affected |
| Debian | linux | bookworm-security | 6.1.190-1 | not affected |
Fixed-version evidence
| Distribution | Package | Type | Release | Fixed version | Urgency | Origin | Bugs |
|---|---|---|---|---|---|---|---|
| Debian | linux | source | sid | 6.4.4-1 | not yet assigned | Not reported | Not reported |
| Debian | linux | source | forky | 6.4.4-1 | not yet assigned | Not reported | Not reported |
| Debian | linux | source | trixie | 6.4.4-1 | not yet assigned | Not reported | Not reported |
| Debian | linux | source | bookworm | Not affected | unimportant | Not reported | Not reported |
OpenFactory catalog packages
Matching against OpenFactory catalog package versions is in progress.
[Debian 12 (Bookworm)]
- [bpftool]Unknown
Source package: [linux]
Details (6)
7.1.0+6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
7.1.0+6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
7.5.0+6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
7.5.0+6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
7.1.0+6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
7.1.0+6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [hyperv-daemons]Unknown
Source package: [linux]
Details (6)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [intel-sdsi]Unknown
Source package: [linux]
Details (1)
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
- [libcpupower1]Unknown
Source package: [linux]
Details (6)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [libcpupower-dev]Unknown
Source package: [linux]
Details (6)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-bpf-dev]Unknown
Source package: [linux]
Details (2)
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
- [linux-compiler-gcc-12-x86]Unknown
Source package: [linux]
Details (2)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-config-6.1]Unknown
Source package: [linux]
Details (4)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-cpupower]Unknown
Source package: [linux]
Details (6)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· amd64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· arm64 · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.1.180-1· amd64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· arm64 · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-doc]Unknown
Source package: [linux]
Details (32)
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· all · bookwormNot affected
dsa · linux · debian · bookworm
6.12.43-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.43-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.57-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.57-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.63-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.63-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.69-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.69-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.73-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.73-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.74-2~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.74-2~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.85-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.85-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.86-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.86-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.88-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.88-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.90-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.90-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.90-2~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.90-2~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.94-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.94-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.12.95-1~bpo12+1· all · bookworm-backportsNot affected
dsa · linux · debian · bookworm
6.1.180-1· all · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· all · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-doc-6.1]Unknown
Source package: [linux]
Details (6)
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.176-1· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.180-1· all · bookworm-securityNot affected
dsa · linux · debian · bookworm
6.1.180-1· all · bookworm-securityNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-amd64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-arm64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-cloud-amd64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-cloud-arm64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-common]Unknown
Source package: [linux]
Details (2)
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-common-rt]Unknown
Source package: [linux]
Details (2)
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
6.1.170-3· all · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-rt-amd64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-47-rt-arm64]Unknown
Source package: [linux]
Details (1)
6.1.170-3· arm64 · bookwormNot affected
dsa · linux · debian · bookworm
- [linux-headers-6.1.0-50-amd64]Unknown
Source package: [linux]
Details (1)
6.1.176-1· amd64 · bookwormNot affected
dsa · linux · debian · bookworm
Observed:
References
- [https://ftp.suse.com/pub/projects/security/]
- [https://osv.dev/vulnerability/DEBIAN-CVE-2023-54149]
- [https://security-tracker.debian.org/tracker/CVE-2023-54149]
- [https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54149.json]
- [https://wid.cert-bund.de/.well-known/csaf/white/2025/wid-sec-w-2025-2929.json]
[CERT-Bund public advisories] · [Debian Security Tracker] · [FIRST EPSS] · [OSV Package Vulnerability Database] · [Red Hat security advisories and VEX] · [SUSE security advisories and VEX]