In the Linux kernel, the following vulnerability has been resolved:
net: dsa: free routing table on probe failure
If complete = true in dsa_tree_setup(), it means that we are the last switch of the tree which is successfully probing, and we should be setting up all switches from our probe path.
After "complete" becomes true, dsa_tree_setup_cpu_ports() or any subsequent function may fail. If that happens, the entire tree setup is in limbo: the first N-1 switches have successfully finished probing (doing nothing but having allocated persistent memory in the tree's dst->ports, and maybe dst->rtable), and switch N failed to probe, ending the tree setup process before anything is tangible from the user's PoV.
If switch N fails to probe, its memory (ports) will be freed and removed from dst->ports. However, the dst->rtable elements pointing to its ports, as created by dsa_link_touch(), will remain there, and will lead to use-after-free if dereferenced.
If dsa_tree_setup_switches() returns -EPROBE_DEFER, which is entirely possible because that is where ds->ops->setup() is, we get a kasan report like this:
================================================================== BUG: KASAN: slab-use-after-free in mv88e6xxx_setup_upstream_port+0x240/0x568 Read of size 8 at addr ffff000004f56020 by task kworker/u8:3/42
Call trace: __asan_report_load8_noabort+0x20/0x30 mv88e6xxx_setup_upstream_port+0x240/0x568 mv88e6xxx_setup+0xebc/0x1eb0 dsa_register_switch+0x1af4/0x2ae0 mv88e6xxx_register_switch+0x1b8/0x2a8 mv88e6xxx_probe+0xc4c/0xf60 mdio_probe+0x78/0xb8 really_probe+0x2b8/0x5a8 __driver_probe_device+0x164/0x298 driver_probe_device+0x78/0x258 __device_attach_driver+0x274/0x350
Allocated by task 42: __kasan_kmalloc+0x84/0xa0 __kmalloc_cache_noprof+0x298/0x490 dsa_switch_touch_ports+0x174/0x3d8 dsa_register_switch+0x800/0x2ae0 mv88e6xxx_register_switch+0x1b8/0x2a8 mv88e6xxx_probe+0xc4c/0xf60 mdio_probe+0x78/0xb8 really_probe+0x2b8/0x5a8 __driver_probe_device+0x164/0x298 driver_probe_device+0x78/0x258 __device_attach_driver+0x274/0x350
Freed by task 42: __kasan_slab_free+0x48/0x68 kfree+0x138/0x418 dsa_register_switch+0x2694/0x2ae0 mv88e6xxx_register_switch+0x1b8/0x2a8 mv88e6xxx_probe+0xc4c/0xf60 mdio_probe+0x78/0xb8 really_probe+0x2b8/0x5a8 __driver_probe_device+0x164/0x298 driver_probe_device+0x78/0x258 __device_attach_driver+0x274/0x350
The simplest way to fix the bug is to delete the routing table in its entirety. dsa_tree_setup_routing_table() has no problem in regenerating it even if we deleted links between ports other than those of switch N, because dsa_link_touch() first checks whether the port pair already exists in dst->rtable, allocating if not.
The deletion of the routing table in its entirety already exists in dsa_tree_teardown(), so refactor that into a function that can also be called from the tree setup error path.
In my analysis of the commit to blame, it is the one which added dsa_link elements to dst->rtable. Prior to that, each switch had its own ds->rtable which is freed when the switch fails to probe. But the tree is potentially persistent memory.
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 |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade perf6.12Upgrade kernel-headersUpgrade kernel-libbpf-staticUpgrade kernel6.12Upgrade kernel-libbpf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel-toolsUpgrade kernel-tools-debuginfoUpgrade kernel6.12-modules-extraUpgrade bpftoolUpgrade kernel6.12-debuginfoUpgrade kernel-livepatch-6.12.25-32.101Upgrade kernel6.12-debuginfo-common-aarch64Upgrade perf6.12-debuginfoUpgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-libbpf-develUpgrade python3-perf6.12-debuginfoUpgrade python3-perf6.12Upgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-libbpf | Jun 24, 2025 | May 1, 2025 |
| Debian | — | Upgrade linux-6.1Upgrade linux | May 15, 2025 | May 1, 2025 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 1, 2025 |
| Suse | — | Upgrade dlm-kmp-64kbUpgrade dtb-rockchipUpgrade gfs2-kmp-rtUpgrade dtb-mediatekUpgrade kernel-default-optionalUpgrade kernel-debug-vdsoUpgrade kernel-rt-develUpgrade kernel-source-azureUpgrade kernel-kvmsmall-vdsoUpgrade cluster-md-kmp-rtUpgrade kernel-syms-azureUpgrade cluster-md-kmp-azureUpgrade kernel-zfcpdumpUpgrade ocfs2-kmp-rtUpgrade kernel-sourceUpgrade cluster-md-kmp-defaultUpgrade kernel-rt-extraUpgrade dtb-apmUpgrade kernel-azure-vdsoUpgrade kernel-kvmsmall-develUpgrade kernel-rt-optionalUpgrade kernel-macrosUpgrade kernel-default-extraUpgrade reiserfs-kmp-azureUpgrade kernel-source-rtUpgrade kernel-azure-optionalUpgrade kernel-rt_debug-vdsoUpgrade dtb-lgUpgrade kernel-obs-buildUpgrade kselftests-kmp-64kbUpgrade dtb-qcomUpgrade dtb-exynosUpgrade dtb-armUpgrade dtb-nvidiaUpgrade dtb-amlogicUpgrade kernel-azureUpgrade kernel-rtUpgrade dtb-alteraUpgrade kernel-azure-develUpgrade kselftests-kmp-azureUpgrade kernel-devel-azureUpgrade kernel-obs-qaUpgrade kernel-rt-livepatch-develUpgrade kernel-default-base-rebuildUpgrade kernel-rt-vdsoUpgrade kernel-kvmsmallUpgrade kernel-default-vdsoUpgrade dtb-amazonUpgrade reiserfs-kmp-rtUpgrade ocfs2-kmp-defaultUpgrade dtb-freescaleUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-defaultUpgrade kernel-rt_debug-develUpgrade kernel-devel-rtUpgrade kernel-source-vanillaUpgrade kernel-defaultUpgrade dtb-caviumUpgrade dtb-broadcomUpgrade dlm-kmp-defaultUpgrade kernel-symsUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-defaultUpgrade dtb-hisiliconUpgrade kernel-default-livepatch-develUpgrade kernel-default-livepatchUpgrade kernel-debugUpgrade kernel-docs-htmlUpgrade cluster-md-kmp-64kbUpgrade reiserfs-kmp-64kbUpgrade kernel-syms-rtUpgrade kernel-default-baseUpgrade kernel-64kb-extraUpgrade kernel-develUpgrade dtb-xilinxUpgrade kernel-rt_debugUpgrade dtb-socionextUpgrade dtb-renesasUpgrade dtb-amdUpgrade kernel-azure-extraUpgrade ocfs2-kmp-azureUpgrade kernel-docsUpgrade kernel-default-develUpgrade kernel-64kb-optionalUpgrade gfs2-kmp-defaultUpgrade gfs2-kmp-azureUpgrade dtb-sprdUpgrade dtb-allwinnerUpgrade kselftests-kmp-rtUpgrade dtb-marvellUpgrade kernel-64kb-develUpgrade dlm-kmp-azureUpgrade kernel-debug-develUpgrade dtb-appleUpgrade kernel-64kbUpgrade gfs2-kmp-64kb | Dec 5, 2025 | Jul 8, 2025 |
| Ubuntu | — | Upgrade linux-image-xilinxUpgrade linux-image-5.15.0-1053-nvidia-tegra-igx-rtUpgrade linux-image-6.8.0-1047-gcp-64kUpgrade linux-image-aws-lts-22.04Upgrade linux-image-gke-64kUpgrade linux-image-5.15.0-184-lowlatency-64kUpgrade linux-image-kvmUpgrade linux-image-5.15.0-1112-awsUpgrade linux-image-raspi-5.15Upgrade linux-image-6.8.0-2037-raspi-realtimeUpgrade linux-image-6.14.0-1004-realtimeUpgrade linux-image-6.8.0-1046-nvidiaUpgrade linux-image-oem-22.04bUpgrade linux-image-ibm-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-generic-6.8Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1047-raspiUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-aws-5.15Upgrade linux-image-gcp-5.15Upgrade linux-image-gcp-6.8Upgrade linux-image-oem-20.04dUpgrade linux-image-realtimeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-aws-64k-5.15Upgrade linux-image-azure-5.15Upgrade linux-image-generic-64k-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-raspi-6.8Upgrade linux-image-6.14.0-1007-raspiUpgrade linux-image-6.8.0-1043-oracle-64kUpgrade linux-image-6.14.0-1007-awsUpgrade linux-image-awsUpgrade linux-image-5.15.0-1107-intel-iotgUpgrade linux-image-5.15.0-186-fipsUpgrade linux-image-aws-64k-6.8Upgrade linux-image-oracle-64kUpgrade linux-image-5.15.0-1064-nvidia-tegra-rtUpgrade linux-image-6.8.0-1030-gkeopUpgrade linux-image-virtualUpgrade linux-image-azure-fipsUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oem-22.04dUpgrade linux-image-oracle-6.8Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-nvidia-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-raspi-nolpaeUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-100-generic-64kUpgrade linux-image-gcp-64kUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-6.8.0-1043-gke-64kUpgrade linux-image-5.15.0-1095-gkeopUpgrade linux-image-5.15.0-1053-nvidia-tegra-igxUpgrade linux-image-5.15.0-1111-realtimeUpgrade linux-image-gke-64k-6.8Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-186-generic-64kUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-azure-fips-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.14.0-1007-oracle-64kUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-aws-fips-6.8Upgrade linux-image-6.14.0-1007-azureUpgrade linux-image-azure-fdeUpgrade linux-image-5.15.0-1104-intel-iot-realtimeUpgrade linux-image-gcpUpgrade linux-image-azure-cvmUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-5.15.0-1112-aws-fipsUpgrade linux-image-oracleUpgrade linux-image-6.8.0-1046-azure-fipsUpgrade linux-image-6.14.0-1007-oracleUpgrade linux-image-generic-64k-5.15Upgrade linux-image-6.8.1-1041-realtimeUpgrade linux-image-5.15.0-186-genericUpgrade linux-image-6.8.0-1046-aws-fipsUpgrade linux-image-5.15.0-184-lowlatencyUpgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-1046-nvidia-lowlatencyUpgrade linux-image-5.15.0-1109-oracleUpgrade linux-image-gkeop-5.15Upgrade linux-image-virtual-5.15Upgrade linux-image-6.8.0-1047-gcp-fipsUpgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-100-lowlatency-64kUpgrade linux-image-6.14.0-22-genericUpgrade linux-image-5.15.0-1106-raspiUpgrade linux-image-5.15.0-1117-azureUpgrade linux-image-6.8.0-100-lowlatencyUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-realtime-5.15Upgrade linux-image-xilinx-6.8Upgrade linux-image-5.15.0-1107-nvidia-lowlatencyUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1112-gcpUpgrade linux-image-5.15.0-1108-gkeUpgrade linux-image-nvidiaUpgrade linux-image-lowlatency-6.8Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-gkeopUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-6.8.0-1046-aws-64kUpgrade linux-image-6.8.0-1043-gkeUpgrade linux-image-oem-20.04bUpgrade linux-image-oem-22.04aUpgrade linux-image-aws-fips-5.15Upgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-5.15.0-1117-azure-fdeUpgrade linux-image-aws-fipsUpgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-1051-azureUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-azureUpgrade linux-image-fips-5.15Upgrade linux-image-6.8.0-1047-gcpUpgrade linux-image-6.8.0-1044-ibmUpgrade linux-image-6.14.0-22-generic-64kUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-5.15.0-1117-azure-fipsUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-5.15.0-1104-kvmUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-genericUpgrade linux-image-azure-fips-5.15Upgrade linux-image-aws-6.8Upgrade linux-image-5.15.0-1112-gcp-fipsUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-ibm-5.15Upgrade linux-image-oracle-5.15Upgrade linux-image-lowlatency-5.15Upgrade linux-image-6.8.0-1023-xilinxUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-realtime-6.8.1Upgrade linux-image-6.8.0-1046-azureUpgrade linux-image-6.8.0-1043-oracleUpgrade linux-image-5.15.0-186-generic-lpaeUpgrade linux-image-ibmUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-azure-fde-5.15Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-oem-20.04Upgrade linux-image-6.14.0-1008-gcpUpgrade linux-image-kvm-5.15Upgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-100-fipsUpgrade linux-image-5.15.0-1106-ibmUpgrade linux-image-6.14.0-1008-gcp-64kUpgrade linux-image-gke-6.8Upgrade linux-image-5.15.0-1112-aws-64kUpgrade linux-image-gkeUpgrade linux-image-5.15.0-1075-xilinx-zynqmpUpgrade linux-image-nvidia-5.15Upgrade linux-image-gke-5.15Upgrade linux-image-6.8.0-1046-nvidia-64kUpgrade linux-image-intelUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-generic-5.15Upgrade linux-image-fipsUpgrade linux-image-azure-lts-22.04Upgrade linux-image-6.8.0-1046-awsUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-5.15.0-1107-nvidiaUpgrade linux-image-oem-20.04cUpgrade linux-image-virtual-6.8Upgrade linux-image-5.15.0-1064-nvidia-tegraUpgrade linux-image-generic-lpaeUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-generic-lpae-5.15Upgrade linux-image-aws-64kUpgrade linux-image-nvidia-tegraUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-6.14.0-1007-aws-64kUpgrade linux-image-6.8.0-1046-nvidia-lowlatency-64kUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-generic-64kUpgrade linux-image-lowlatencyUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-100-genericUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-raspiUpgrade linux-image-6.14.0-1007-azure-fdeUpgrade linux-image-oracle-lts-24.04 | Jun 26, 2025 | May 1, 2025 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 28, 2026 | May 1, 2025 |
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