CVE-2026-98164: KVM: x86/mmu: Check write tracking in all address spaces
In the Linux kernel, the following vulnerability has been resolved:
KVM: x86/mmu: Check write tracking in all address spaces
kvmgfniswritetracked() checks only the supplied memslot, but page tracking is per-address-space and shadow pages are shared across all address spaces. With SMM, a GFN can therefore be write-tracked in one address space and appear untracked through the other.
Check the supplied slot first, then the slot for the other address space. This ensures all callers honor write tracking regardless of the active address space. In particular, it prevents mmutrytounsyncpages() from marking an upper-level shadow page unsync and eventually triggering the BUG in ptelistremove().
[invert direction of the conditional. - Paolo]
Affected Software
Event History
Frequently Asked Questions
Which KVM configurations are exposed to this issue?
The issue requires KVM x86 memory management with System Management Mode (SMM), where a guest frame number can be write-tracked in one address space but checked through another. The described flaw arises because shadow pages are shared across address spaces.
What is the practical impact if the flaw is triggered?
Incorrect write-tracking handling can allow mmu_try_to_unsync_pages() to mark an upper-level shadow page unsynchronized. This can eventually trigger a BUG in pte_list_remove().
What change addresses the problem?
The fix checks write tracking in both the supplied memslot and the corresponding slot in the other address space. This makes callers honor write tracking regardless of the active address space.