In the Linux kernel, the following vulnerability has been resolved:
net: dsa: properly keep track of conduit reference
Problem description -------------------
DSA has a mumbo-jumbo of reference handling of the conduit net device and its kobject which, sadly, is just wrong and doesn't make sense.
There are two distinct problems.
1. The OF path, which uses of_find_net_device_by_node(), never releases the elevated refcount on the conduit's kobject. Nominally, the OF and non-OF paths should result in objects having identical reference counts taken, and it is already suspicious that dsa_dev_to_net_device() has a put_device() call which is missing in dsa_port_parse_of(), but we can actually even verify that an issue exists. With CONFIG_DEBUG_KOBJECT_RELEASE=y, if we run this command "before" and "after" applying this patch:
(unbind the conduit driver for net device eno2) echo 0000:00:00.2 > /sys/bus/pci/drivers/fsl_enetc/unbind
we see these lines in the output diff which appear only with the patch applied:
kobject: 'eno2' (ffff002009a3a6b8): kobject_release, parent 0000000000000000 (delayed 1000) kobject: '109' (ffff0020099d59a0): kobject_release, parent 0000000000000000 (delayed 1000)
2. After we find the conduit interface one way (OF) or another (non-OF), it can get unregistered at any time, and DSA remains with a long-lived, but in this case stale, cpu_dp->conduit pointer. Holding the net device's underlying kobject isn't actually of much help, it just prevents it from being freed (but we never need that kobject directly). What helps us to prevent the net device from being unregistered is the parallel netdev reference mechanism (dev_hold() and dev_put()).
Actually we actually use that netdev tracker mechanism implicitly on user ports since commit 2f1e8ea726e9 ("net: dsa: link interfaces with the DSA master to get rid of lockdep warnings"), via netdev_upper_dev_link(). But time still passes at DSA switch probe time between the initial of_find_net_device_by_node() code and the user port creation time, time during which the conduit could unregister itself and DSA wouldn't know about it.
So we have to run of_find_net_device_by_node() under rtnl_lock() to prevent that from happening, and release the lock only with the netdev tracker having acquired the reference.
Do we need to keep the reference until dsa_unregister_switch() / dsa_switch_shutdown()? 1: Maybe yes. A switch device will still be registered even if all user ports failed to probe, see commit 86f8b1c01a0a ("net: dsa: Do not make user port errors fatal"), and the cpu_dp->conduit pointers remain valid. I haven't audited all call paths to see whether they will actually use the conduit in lack of any user port, but if they do, it seems safer to not rely on user ports for that reference. 2. Definitely yes. We support changing the conduit which a user port is associated to, and we can get into a situation where we've moved all user ports away from a conduit, thus no longer hold any reference to it via the net device tracker. But we shouldn't let it go nonetheless - see the next change in relation to dsa_tree_find_first_conduit() and LAG conduits which disappear. We have to be prepared to return to the physical conduit, so the CPU port must explicitly keep another reference to it. This is also to say: the user ports and their CPU ports may not always keep a reference to the same conduit net device, and both are needed.
As for the conduit's kobject for the /sys/class/net/ entry, we don't care about it, we can release it as soon as we hold the net device object itself.
History and blame attribution -----------------------------
The code has been refactored so many times, it is very difficult to follow and properly attribute a blame, but I'll try to make a short history which I hope to be correct.
We have two distinct probing paths: - one for OF, introduced in 2016 i ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Jan 23, 2026 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-6.17.0-1015-azureUpgrade linux-image-gcp-64k-6.17Upgrade linux-image-gcp-6.17Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-realtimeUpgrade linux-image-6.17.0-1015-awsUpgrade linux-image-6.17.0-1018-gcp-64kUpgrade linux-image-aws-fips-6.8Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-generic-64k-6.8Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-aws-fipsUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-fipsUpgrade linux-image-realtime-hwe-24.04-edgeUpgrade linux-image-awsUpgrade linux-image-oem-24.04cUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-lowlatency-6.8Upgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-nvidia-64k-6.17Upgrade linux-image-oem-6.17Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-gke-64kUpgrade linux-image-nvidia-6.17Upgrade linux-image-generic-lpaeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-aws-64k-6.8Upgrade linux-image-azure-fipsUpgrade linux-image-kvmUpgrade linux-image-ibm-classicUpgrade linux-image-oracle-6.17Upgrade linux-image-gcp-fipsUpgrade linux-image-6.17.0-1017-raspiUpgrade linux-image-oracleUpgrade linux-image-6.8.0-136-lowlatencyUpgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-oracle-64k-6.17Upgrade linux-image-6.17.0-1026-nvidia-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1061-awsUpgrade linux-image-oem-24.04bUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-azure-fdeUpgrade linux-image-gcp-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-ibm-6.8Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-nvidia-hwe-24.04Upgrade linux-image-laptop-23.10Upgrade linux-image-oem-20.04cUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-aws-lts-24.04Upgrade linux-image-fips-6.8Upgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-6.8.0-136-fipsUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-raspi-realtimeUpgrade linux-image-6.17.0-1026-nvidiaUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-raspi-6.17Upgrade linux-image-gkeUpgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-xilinxUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-lowlatency-64kUpgrade linux-image-ibmUpgrade linux-image-gke-64k-6.8Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-generic-64kUpgrade linux-image-azure-6.8Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gcpUpgrade linux-image-xilinx-6.8Upgrade linux-image-realtime-hwe-24.04Upgrade linux-image-oem-20.04Upgrade linux-image-6.17.0-1014-oracleUpgrade linux-image-aws-64kUpgrade linux-image-realtime-6.17Upgrade linux-image-oem-22.04bUpgrade linux-image-gcp-64kUpgrade linux-image-aws-6.17Upgrade linux-image-6.17.0-29-generic-64kUpgrade linux-image-6.17.0-1014-oracle-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-virtual-6.17Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-azureUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-oem-24.04Upgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-nvidia-64k-hwe-24.04Upgrade linux-image-6.17.0-1018-gcpUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-generic-6.8Upgrade linux-image-genericUpgrade linux-image-azure-6.17Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-raspi-6.8Upgrade linux-image-oracle-64kUpgrade linux-image-oem-22.04cUpgrade linux-image-oem-20.04dUpgrade linux-image-6.17.0-29-genericUpgrade linux-image-azure-fde-6.8Upgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-6.17.0-1017-awsUpgrade linux-image-oracle-6.8Upgrade linux-image-6.17.0-1017-aws-64kUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-6.17.0-1023-oemUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-oem-22.04dUpgrade linux-image-6.17.0-1015-aws-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oem-24.04aUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-nvidia-tegraUpgrade linux-image-aws-64k-6.17Upgrade linux-image-gke-6.8Upgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.17.0-1013-realtimeUpgrade linux-image-virtual-6.8Upgrade linux-image-oem-24.04dUpgrade linux-image-oem-22.04aUpgrade linux-image-oem-22.04Upgrade linux-image-nvidiaUpgrade linux-image-gkeopUpgrade linux-image-generic-6.17Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-realtime-6.8.1Upgrade linux-image-azure-lts-24.04Upgrade linux-image-oem-20.04bUpgrade linux-image-generic-64k-6.17Upgrade linux-image-6.8.0-1064-gcp | May 25, 2026 | May 19, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 17, 2026 | Jan 23, 2026 |
Prioritise with Active Threat Intelligence
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