CVE-2025-37864
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
09/05/2025
Last modified:
12/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: dsa: clean up FDB, MDB, VLAN entries on unbind<br />
<br />
As explained in many places such as commit b117e1e8a86d ("net: dsa:<br />
delete dsa_legacy_fdb_add and dsa_legacy_fdb_del"), DSA is written given<br />
the assumption that higher layers have balanced additions/deletions.<br />
As such, it only makes sense to be extremely vocal when those<br />
assumptions are violated and the driver unbinds with entries still<br />
present.<br />
<br />
But Ido Schimmel points out a very simple situation where that is wrong:<br />
https://lore.kernel.org/netdev/ZDazSM5UsPPjQuKr@shredder/<br />
(also briefly discussed by me in the aforementioned commit).<br />
<br />
Basically, while the bridge bypass operations are not something that DSA<br />
explicitly documents, and for the majority of DSA drivers this API<br />
simply causes them to go to promiscuous mode, that isn&#39;t the case for<br />
all drivers. Some have the necessary requirements for bridge bypass<br />
operations to do something useful - see dsa_switch_supports_uc_filtering().<br />
<br />
Although in tools/testing/selftests/net/forwarding/local_termination.sh,<br />
we made an effort to popularize better mechanisms to manage address<br />
filters on DSA interfaces from user space - namely macvlan for unicast,<br />
and setsockopt(IP_ADD_MEMBERSHIP) - through mtools - for multicast, the<br />
fact is that &#39;bridge fdb add ... self static local&#39; also exists as<br />
kernel UAPI, and might be useful to someone, even if only for a quick<br />
hack.<br />
<br />
It seems counter-productive to block that path by implementing shim<br />
.ndo_fdb_add and .ndo_fdb_del operations which just return -EOPNOTSUPP<br />
in order to prevent the ndo_dflt_fdb_add() and ndo_dflt_fdb_del() from<br />
running, although we could do that.<br />
<br />
Accepting that cleanup is necessary seems to be the only option.<br />
Especially since we appear to be coming back at this from a different<br />
angle as well. Russell King is noticing that the WARN_ON() triggers even<br />
for VLANs:<br />
https://lore.kernel.org/netdev/Z_li8Bj8bD4-BYKQ@shell.armlinux.org.uk/<br />
<br />
What happens in the bug report above is that dsa_port_do_vlan_del() fails,<br />
then the VLAN entry lingers on, and then we warn on unbind and leak it.<br />
<br />
This is not a straight revert of the blamed commit, but we now add an<br />
informational print to the kernel log (to still have a way to see<br />
that bugs exist), and some extra comments gathered from past years&#39;<br />
experience, to justify the logic.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.18 (including) | 6.6.88 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.25 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.14.4 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page



