CVE-2026-90369: wifi: mt76: fix out-of-bounds access in mmio copy helpers
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: fix out-of-bounds access in mmio copy helpers
mt76mmiowritecopy() and mt76mmioreadcopy() iterate up to ALIGN(len, 4), so a length that is not a multiple of four reads past the source buffer (writecopy) or writes past the destination (readcopy). Copy the aligned body in the loop and handle the remaining tail through a 4-byte bounce buffer, keeping the register access width unchanged.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
What input condition causes the invalid memory access?
The issue occurs when either MMIO copy helper is called with a length that is not a multiple of four bytes. The helpers iterate through ALIGN(len, 4), causing the final iteration to exceed the requested buffer length.
Which buffer is accessed out of bounds?
mt76_mmio_write_copy() can read beyond its source buffer, while mt76_mmio_read_copy() can write beyond its destination buffer. The resolved implementation handles the unaligned trailing bytes with a 4-byte bounce buffer while preserving 4-byte register accesses.