← Back to search

CVE-2026-98305

7.8 HIGH

Published 2026-10-06 · Updated 2026-10-07

AI risk analysis

Summary
The Linux kernel's DSA driver for mxl862xx switches has a race condition where statistics polling continues after port teardown, leading to use-after-free errors when accessing freed port structures. This occurs because the stats poll is started before setup completion and not properly stopped during teardown.
Exploitability
Exploitation is moderately difficult requiring precise timing of port teardown and stats polling operations, with no public exploit references available.
Blast radius
The vulnerability could affect network infrastructure devices using mxl862xx switches, potentially leading to system crashes or data corruption when handling network traffic.
Detection
No reliable host or network indicator is derivable from the published description.
Prioritized remediation
Apply kernel patch for Linux kernel version 6.10-rc1 or later which includes the fix for mxl862xx stats polling race condition.
kernelnetworkdsarace-condition

Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.

NVD description

In the Linux kernel, the following vulnerability has been resolved: net: dsa: mxl862xx: disable the stats poll on teardown mxl862xx_setup() arms the stats poll before mxl862xx_setup_mdio(), and nothing stops it until dsa_register_switch() has returned an error to mxl862xx_probe(). DSA frees the dsa_port list before it returns, so a poll that fires once .setup or a later step of dsa_tree_setup() has failed walks freed ports. On shutdown the user ports stay registered, and the WORK_STOPPED flag test in mxl862xx_get_stats64() is not atomic with the cancel in mxl862xx_shutdown(), so a re-arm that read the flag before it was set queues the poll after cancel_delayed_work_sync() has returned. Arm the poll once .setup has succeeded and stop it from a .teardown op, which DSA calls on unregister and after a failed registration, in both cases before it frees the ports. Use disable_delayed_work_sync() there and in shutdown(): it drains a running poll as the cancel did and turns every later attempt to queue the work into a no-op, so the re-arm cannot bring the poll back. remove() and the probe error path only set WORK_STOPPED, which crc_err_work tests before it walks the ports.

CVSS vector

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

All references

Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.

Related CVEs

Related by shared AI tags and CWE weakness class. Browse the full archive.