CVE-2026-99176

KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry

State
Published
Severity
Not scored
Published
Oct 28, 2026
Updated
Oct 30, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry

Reset the vCPU's MMU pointer back to the root MMU if loading L2 state fails in the "not from VM-Entry" case, i.e. when emulating RSM or handling KVM_SET_NESTED_STATE. Failure to unwind the MMU pointer results in KVM trying to run L1 with a nested MMU, and is especially problematic if the vCPU manages to free its nested state before the VM crashes. Constructing the root for a nested EPT MMU goes through vmcs12, which is dynamically allocated/freed when nVMX is enabled/disabled. And so if the nested state is freed with the MMU still pointing at the nested MMU, KVM will hit a NULL pointer deref when attempting to get L1=>L2 EPTP.

BUG: kernel NULL pointer dereference, address: 0000000000000078 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 114a2d067 P4D 111743067 PUD 11141f067 PMD 0 Oops: Oops: 0000 [#1] SMP CPU: 20 UID: 1000 PID: 1272 Comm: nested_tdp_faul Not tainted 7.3.0-rc4-8c89f11d1a99b-sink-vm #1914 PREEMPTLAZY Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:nested_ept_get_eptp+0xb/0x10 [kvm_intel] Call Trace: <TASK> kvm_mmu_load+0xcd/0x870 [kvm] kvm_arch_vcpu_ioctl_run+0x18f5/0x1f80 [kvm] kvm_vcpu_ioctl+0x2c7/0x970 [kvm] __x64_sys_ioctl+0x90/0xd0 do_syscall_64+0x9c/0x4d0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x47491b </TASK> Modules linked in: kvm_intel kvm irqbypass CR2: 0000000000000078 ---[ end trace 0000000000000000 ]--- RIP: 0010:nested_ept_get_eptp+0xb/0x10 [kvm_intel]

[sean: write changelog]

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before c2586874605ec23b611c57fe71d183d98f168971Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before c611337aee17a0627e365e58e2b6e78803fb3c36Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before df4d01be5b318024bec68654c7af0ebc0e0ed8a1Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before 6a36b05fc5b3d660fcc826133dc92e2fc87bd1deAffected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before f0c077c36fda9d498db39199e3997860e985efc8Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before d00d5f534a8238674755e59826a6c7d3c8efb870Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before c9716f956216eb74ab0aad7f633586edd49e0322Affected
  • 72e9cbdb43384ceacc49e2fb6b8c8fb7c5988778 to before c8f4cfe1cf93bce924e27f2abead7a4c4a487505Affected
LinuxLinux
  • 4.15Affected
  • before 4.15Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.161 through 6.6.*Not affected
  • 6.12.115 through 6.12.*Not affected
  • 6.18.59 through 6.18.*Not affected
  • 7.2.13 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.