CVE-2026-46022: misc: ibmasm: fix OOB MMIO read in ibmasm_handle_mouse_interrupt()
In the Linux kernel, the following vulnerability has been resolved:
misc: ibmasm: fix OOB MMIO read in ibmasmhandlemouseinterrupt()
ibmasmhandlemouseinterrupt() performs an out-of-bounds MMIO read when the queue reader or writer index from hardware exceeds REMOTEQUEUESIZE (60).
A compromised service processor can trigger this by writing an out-of-range value to the reader or writer MMIO register before asserting an interrupt. Since writer is re-read from hardware on every loop iteration, it can also be set to an out-of-range value after the loop has already started.
The root cause is that getqueuereader() and getqueuewriter() return raw readl() values that are passed directly into getqueueentry(), which computes:
queuebegin + reader sizeof(struct remoteinput)
with no bounds check. This unchecked MMIO address is then passed to memcpyfromio(), reading 8 bytes from unintended device registers. For sufficiently large values the address falls outside the PCI BAR mapping entirely, triggering a machine check exception.
Fix by checking both indices against REMOTEQUEUESIZE at the top of the loop body, before any call to getqueueentry(). On an out-of-range value, reset the reader register to 0 via setqueuereader() before breaking, so that normal queue operation can resume if the corrupted hardware state is transient.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.141.1-1 - Configuration
Update the ibmasm queue index handling logic so that both the reader and writer indices are checked against REMOTE_QUEUE_SIZE (REMOTE_QUEUE_SIZE is 60 in the fix description) before using them to form MMIO addresses / compute queue entries.
ibmasm (remote input queue handling) REMOTE_QUEUE_SIZE = 60 - Configuration
In the fix, when the queue reader index from hardware exceeds bounds, reset the reader register to 0 via set_queue_reader() before continuing queue operation.
ibmasm (remote input queue handling) queue_reader_MMIO_register = 0
Event History
Frequently Asked Questions
What is the severity of CVE-2026-46022?
The severity of CVE-2026-46022 is rated high with a CVSS score of 7.1.
How do I fix CVE-2026-46022?
To fix CVE-2026-46022, update to the latest version of the Linux kernel that has addressed the out-of-bounds MMIO read issue.
What type of systems are affected by CVE-2026-46022?
CVE-2026-46022 affects the Linux kernel versions, specifically those related to the IBM ASM subsystem.
What could happen if CVE-2026-46022 is exploited?
Exploitation of CVE-2026-46022 could potentially lead to denial of service due to system instability from out-of-bounds reads.
When was CVE-2026-46022 published?
CVE-2026-46022 was published on May 27, 2026.