CVE-2026-53345
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
01/07/2026
Last modified:
22/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
KVM: Don&#39;t WARN if memory is dirtied without a vCPU when the VM is dying<br />
<br />
When marking a page dirty, complain about not having a running/loaded vCPU<br />
if and only if the VM is still alive, i.e. its refcount is non-zero. This<br />
will allow fixing a memory leak for x86 SEV-ES guests without hitting what<br />
is effectively a false positive on the WARN.<br />
<br />
For some SEV-ES VM-Exits, KVM keeps a writable mapping of a guest page<br />
across an exit to userspace, and typically unmaps the page on the next<br />
KVM_RUN. But if userspace never calls KVM_RUN after such an exit, then KVM<br />
needs to unmap the page when the vCPU is destroyed, which in turn triggers<br />
the WARN about not having a running vCPU.<br />
<br />
Alternatively, SEV-ES could temporarily load the vCPU to suppress the WARN,<br />
as is done in nested_vmx_free_vcpu() (but for completely unrelated reasons;<br />
suppressing WARN from nested_put_vmcs12_pages() is pure happenstance). But<br />
loading a vCPU during destruction is gross (ideally nVMX code would be<br />
cleaned up), risks complicating the SEV-ES code (KVM would need to ensure<br />
the temporarily load()+put() only runs when the vCPU isn&#39;t already loaded),<br />
and is ultimately pointless.<br />
<br />
The motivation for the WARN is to guard against KVM dirtying guest memory<br />
without pushing the corresponding GFN to the active vCPU&#39;s dirty ring, e.g.<br />
to ensure userspace doesn&#39;t miss a dirty page. But for the VM&#39;s refcount<br />
to reach zero, there can&#39;t be _any_ userspace mappings to the dirty ring,<br />
as mapping the dirty ring requires doing mmap() on the vCPU FD. I.e. if<br />
userspace had a valid mapping for the dirty ring, then the vCPU file and<br />
thus the owning VM would still be alive. And so since userspace can&#39;t<br />
possibly reach the dirty ring, whether or not KVM technically "misses" a<br />
push to the dirty ring is irrelevant.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.17 (including) | 6.6.143 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.94 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.36 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 7.0.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/033d39e41fc30f484f4e4f37fb4cd76b12cbb18e
- https://git.kernel.org/stable/c/343e95c8ecc40e0738975ef4ee24c0c35e800e6b
- https://git.kernel.org/stable/c/66a8e7ddd901023c89a2733494d827eca3f9c1b0
- https://git.kernel.org/stable/c/8618004d3e897c0f1b71d9a9ab860461289bb89a
- https://git.kernel.org/stable/c/99d7d43784ae3235026581e9bf892c036e04c8e6



