CVE-2026-31735: iommupt: Fix short gather if the unmap goes into a large mapping
In the Linux kernel, the following vulnerability has been resolved:
iommupt: Fix short gather if the unmap goes into a large mapping
unmap has the odd behavior that it can unmap more than requested if the ending point lands within the middle of a large or contiguous IOPTE.
In this case the gather should flush everything unmapped which can be larger than what was requested to be unmapped. The gather was only flushing the range requested to be unmapped, not extending to the extra range, resulting in a short invalidation if the caller hits this special condition.
This was found by the new invalidation/gather test I am adding in preparation for ARMv8. Claude deduced the root cause.
As far as I remember nothing relies on unmapping a large entry, so this is likely not a triggerable bug.
Affected Software
Event History
Frequently Asked Questions
Is this believed to be exploitable in practice?
The available information says it is likely not triggerable, because nothing is known to rely on unmapping a large entry in the condition that causes the short invalidation.
What condition causes the incomplete invalidation?
It occurs when an unmap operation ends in the middle of a large or contiguous IOPTE. The unmap can remove more than the requested range, but the gather previously flushed only the requested range rather than all pages actually unmapped.
How was the issue identified?
It was found by a new invalidation/gather test being added in preparation for ARMv8. The root cause was identified as the gather range not being extended when unmap removes additional space covered by a large mapping.