CVE-2026-89523
largeUse-After-Free Race in Linux mt76 MediaTek MT7925 Wi-Fi Driver
The Linux kernel's mt76 driver for MediaTek MT7925 Wi-Fi chipsets fails to cancel a pending delayed work item (mlo_pm_work) when the device is reset, suspended, or unregistered. If the work runs after teardown has begun, it accesses vif/bss structures that may already be freed, or issues MCU commands while firmware is unavailable, creating a use-after-free race reachable via chip reset recovery, PCIe/USB suspend, or device unbind. A local attacker with low privileges who can time suspend/resume cycles or trigger a reset could exploit this to crash the kernel (denial of service) or potentially execute code with kernel-level privileges, reflected in the high confidentiality/integrity/impact ratings. Affected systems are Linux machines using MT7925 Wi-Fi hardware through the mt7925 driver (PCIe and USB variants) in kernels that predate the fix. No public proof-of-concept exists and no exploitation has been observed.
What to do: Upgrade to a kernel release or vendor package that includes the fix, which adds cancel_delayed_work_sync(&dev->mlo_pm_work) to mt7925_mac_reset_work, mt7925e_unregister_device, and the PCIe/USB/mac80211 suspend paths; track your distribution's stable kernel advisories for the backport. There is no configuration-level workaround, but the attack requires local access, so restricting untrusted local accounts limits risk. Watch for kernel panics, splats, or WARNING traces from mt7925 during suspend/resume or firmware reset recovery as an indicator of hitting the race.
| Linux kernel mt76 mt7925 driver (MediaTek MT7925 Wi-Fi, PCIe and USB variants) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7925: cancel pending mlo_pm_work If the device is reset, suspended or unregistered within that window, the pending work can still run and access vif/bss data that may already be freed, or send MCU commands while the firmware is not available. Add cancel_delayed_work_sync(&dev->mlo_pm_work) in all relevant teardown and suspend paths: - mt7925_mac_reset_work() (chip reset recovery) - mt7925e_unregister_device() (PCIe unbind) - mt7925_pci_suspend() (PCIe bus suspend) - mt7925_suspend() (mac80211 suspend) - mt7925u_suspend() (USB bus / runtime suspend) This ensures the work is stopped before the device state becomes invalid.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.