CVE-2026-90379: wifi: mt76: mt7921: Add PCIe AER handler support to prevent system crash

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

wifi: mt76: mt7921: Add PCIe AER handler support to prevent system crash

When an AER error occurs and the bus is hung, the register reads return 0xFFFFFFFF, causing the DMA queue state to be corrupted and resulting in an invalid memory access when accessing q->desc[] or q->entry[].

Unable to handle kernel paging request at virtual address ffffffc01099eac0 pc : mt76dmaaddbuf+0x124/0x188 [mt76] lr : mt76dmarxfill+0x11c/0x1d8 [mt76] sp : ffffffc016d9bbf0 x29: ffffffc016d9bc10 x28: 0000000000000000 x27: 0000000000000000 x26: ffffffb7855e50b8 x25: ffffffb80d04f000 x24: 0000000000000000 x23: 0000000000000ec0 x22: ffffffb796803648 x21: ffffffb796801f80 x20: ffffffb7968035f8 x19: 0000000000000ec0 x18: 0000000000000000 x17: 000000004ec00000 x16: 000000000ec00000 x15: ffffffc01099eac0 x14: 000000004ec00000 x13: 00000000ffc5a000 x12: ffffffc016d9bc32 x11: 00000000ffffffff x10: 0000000000000002 x9 : 0000000000000000 x8 : 000000000000b4ac x7 : 0000000000000a20 x6 : ffffffb6c1806400 x5 : 0000000000000000 x4 : ffffffb80d04f000 x3 : 0000000000000000 x2 : 0000000000000001 x1 : 000000000ec04000 x0 : ffffffb7968035f8 Call trace: mt76dmaaddbuf+0x124/0x188 [mt76 (HASH:1029 4)] mt76dmarxreset+0xe8/0xfc [mt76 (HASH:1029 4)] mt7921wpdmareset+0x188/0x1b0 [mt7921e (HASH:ee48 5)] mt7921emacreset+0x128/0x418 [mt7921e (HASH:ee48 5)] mt7921macresetwork+0xac/0x1a8 [mt7921common (HASH:f721 6)] processonework+0x188/0x514 workerthread+0x12c/0x300 kthread+0x140/0x1fc retfromfork+0x10/0x30

Fix the invalid memory access by validating the DMA index read from the hardware before it is used as a queue index. An out-of-range value, such as the 0xFFFFFFFF returned while the bus is hung, is now clamped so it can no longer corrupt q->head or q->tail. In addition, check the bushung flag in mt7921macresetwork() before attempting the reset sequence, reject MCU messages while the bus is hung, and install no-op bus operations when an unrecoverable AER error is detected, preventing further invalid hardware accesses.

Due to hardware limitations - such as the lack of a connected hardware reset pin or the absence of host re-probe functionality - affected Wi-Fi devices may not fully recover to a normal operational state after certain errors, even with AER enabled.

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    When an AER error occurs and the PCIe bus is hung, ensure register reads that return 0xFFFFFFFF are clamped and that the code checks the bus_hung flag; install no-op bus operations while the bus is hung so the system does not perform invalid memory accesses to q->desc[] or q->entry[].

    Linux kernel mt76/mt7921 PCIe AER (internal bus error handling) bus_hung handling / install no-op bus operations while bus is hung = enable
  2. Configuration

    Validate the DMA index read from the hardware before using it to access q->desc[] or q->entry[]; specifically, clamp the 0xFFFFFFFF value returned while the bus is hung so it can no longer corrupt q->head or q->tail.

    Linux kernel mt76_dma DMA index validation / clamping of 0xFFFFFFFF when bus is hung = clamp_invalid_dma_index
  3. Configuration

    In mt7921_mac_reset_work() before attempting the reset sequence, reject MCU messages while the bus is hung (including installing no-op bus operations) to prevent corruption of q->head or q->tail.

    Linux kernel mt7921_common mt7921_mac_reset_work() reject MCU messages while bus is hung during reset sequence = reject

Event History

Sep 17, 2026
CVE Published
via MITRE·04:09 PM
Data Sourced
via MITRE·04:09 PM
Description

Frequently Asked Questions

1

Which systems are exposed to this failure?

Systems using the Linux kernel mt76 driver with an mt7921 device connected through PCIe are implicated. The failure path requires a PCIe Advanced Error Reporting (AER) error in which the bus becomes hung.

2

What is the practical impact when the condition occurs?

Hung-bus register reads return 0xFFFFFFFF, which can corrupt DMA queue state. Subsequent access to DMA descriptor or entry arrays can cause an invalid memory access and a kernel crash.

3

How can I identify whether this has occurred?

Kernel logs may show an "Unable to handle kernel paging request" message with mt76_dma_add_buf and mt76_dma_rx_fill in the call trace. The register value 0xFFFFFFFF is also associated with the hung PCIe bus condition described for this issue.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203