CVE-2026-98468
Received Received - Intake

Race Condition in Linux Kernel KVM ARM64 Stage 2 Page Table Handling

Vulnerability report for CVE-2026-98468, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-18

Last updated on: 2026-10-18

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Fix spurious warning for benign stage 2 teardown race kvmtool was used to establish an L1 guest with 8 CPUs and 8 GiB of RAM, an L2 guest with 4 CPUs and 4 GiB of RAM and an L3 guest with 2 CPUs and 2 GiB of RAM, all of which was then exited. Under memory pressure in the L0 host warnings were observed due to migration triggered by compaction: WARNING: arch/arm64/kvm/mmu.c:336 at __unmap_stage2_range+0x64/0x80, CPU#5: kcompactd0/66 Which was, in turn, triggered by an MMU notifier for the host invalidation: mmu_notifier_invalidate_range_start() -> ... -> kvm_mmu_notifier_invalidate_range_start() -> kvm_mmu_unmap_gfn_range() -> kvm_unmap_gfn_range() -> kvm_nested_s2_unmap() -> kvm_stage2_unmap_range() -> __unmap_stage2_range() -> stage2_apply_range() <- -EINVAL, triggering a WARN_ON() Racing with L0's teardown of stage 2 page tables: exit_mm() -> mmput() -> __mmput() -> exit_mmap() -> mmu_notifier_release() -> ... -> kvm_mmu_notifier_release() -> kvm_flush_shadow_all() -> kvm_arch_flush_shadow_all() -> kvm_free_stage2_pgd() -> [ acquire kvm->mmu_lock for write ] -> mmu->pgt = NULL [ among other tasks ] -> [ release kvm->mmu_lock for write ] It turns out there is a benign race resulting in a spurious warning: Thread A - notify: migration | Thread B - notify: release -------------------------------|--------------------------------- < kvm->mmu_lock held > | stage2_apply_range() | get mmu->pgt, check !NULL | ... | kvm_arch_flush_shadow_all() cond_resched_rwlock_write(); | < contend, sleep kvm->mmu_lock > < drop kvm->mmu_lock > | < acquire kvm->mmu_lock> | ... | kvm_free_stage2_pgd() | mmu->pgt = NULL | < invalidate MMU > | ... | < release kvm->mmu_lock > [ scheduled ] | stage2_apply_range() | < loop to next > | get, mmu->pgt, check !NULL | is NULL, return -EINVAL | __unmap_stage2_range() | WARN_ON(-EINVAL) <--- entirely spurious - the race was handled correctly. Fix the spurious warning by updating stage2_apply_range() to no longer treat concurrent PGT teardown on lock release as an error - whether the walker is tearing down page tables or doing something else this is a legitimate reason to abort the operation without error. This keeps the warning in place for all other circumstances. In practice only __unmap_stage2_range() actually does anything with the error so this only impacts that.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-18
Last Modified
2026-10-18
Generated
2026-10-18
AI Q&A
2026-10-18
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 5 associated CPEs
Vendor Product Version / Range
Linux Linux ec14c272408af43d392f65f55e66f3b94fc61921
Linux Linux ec14c272408af43d392f65f55e66f3b94fc61921
Linux Linux ec14c272408af43d392f65f55e66f3b94fc61921
Linux Linux ec14c272408af43d392f65f55e66f3b94fc61921
Linux Linux 6.11

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a vulnerability in the Linux kernel related to KVM (Kernel-based Virtual Machine) for ARM64 systems. It involves a race condition during the teardown of stage 2 page tables in nested virtualization scenarios. The issue causes a spurious warning message when memory pressure triggers compaction in the host system, but the race is benign and handled correctly.

Detection Guidance

This vulnerability is specific to the Linux kernel's KVM arm64 implementation and manifests as a spurious warning during memory pressure scenarios. Detection primarily involves monitoring kernel logs for the warning message: WARNING: arch/arm64/kvm/mmu.c:336 at __unmap_stage2_range+0x64/0x80, CPU#X: kcompactdX/X. Check dmesg or journalctl for these entries.

Impact Analysis

This vulnerability primarily affects systems running nested virtualization on ARM64 with KVM. It causes unnecessary warning messages in logs under memory pressure conditions. The impact is limited to log noise and does not affect system stability or security, as the race condition is benign and handled properly.

Mitigation Strategies

Apply the kernel patch that fixes the spurious warning in stage2_apply_range(). Update to a kernel version containing the fix. No immediate configuration changes are required as this is a benign race condition that only produces misleading warnings.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-98468. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart