CVE-2026-98715

Source
https://cve.org/CVERecord?id=CVE-2026-98715
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98715.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-98715
Downstream
Published
2026-10-18T15:46:47Z
Modified
2026-11-11T02:48:39Z
Summary
KVM: SVM: Preserve TLB control (i.e. pending TLB flush) on failed VMRUN
Details

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

KVM: SVM: Preserve TLB control (i.e. pending TLB flush) on failed VMRUN

Don't reset the VMCB's TLB control back to "do nothing" on a failed VMRUN, as empirical testing shows that the CPU performs the requested TLB flush if and only if VMRUN is successful, i.e. clearing TLB control on a failed VMRUN effectively drops a TLB flush.

Explicitly track the need to flush all ASIDs on a per-CPU basis, as the ASID reuse condition is tied to the pCPU, not to the vCPU. As a bonus, this also obviates the need to avoid clobbering FLUSH_ALL_ASID with TLB_CONTROL_FLUSH_ASID, e.g. in svm_flush_tlb_asid().

Deliberately don't bother saving/restoring the "old" tlb_ctl on failure, in quotes because it's not exactly the old tlb_ctl, it's the tlb_ctl from after pre_svm_run(), but before updating tlb_ctl for flush_all_asids. If VMRUN fails and TLB_CONTROL_FLUSH_ALL_ASID is forced, then the next successful run of the VMCB may unnecessarily flush all ASIDs, which strictly speaking could result in noisy neighbor issues. However, the fact that new_asid() is already guest-triggerable, because of KVM's flawed behavior of clearing the ASID on emulated INIT, means that a guest can already trigger a flush of all ASIDs at roughly the same rate. And once KVM stops clobbering the ASID on emulated INIT, or assigns a static ASID to each vCPU, this flaw goes away.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98715.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
38e5e92fe8c02a8766459d505423b855caf9af1f
Fixed
bfe48e689ba011d3d6cf8adcca03072aa0430133
Fixed
f2bd7cf6a83e49c710e2b93d3064fa0ebb7e0006
Fixed
fd873c3d1b5240e80365f09e758e8c96b88a7cdb
Fixed
60d93c27859fb3ec5b5a689e24de303f166477d0

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98715.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.38
Fixed
6.12.117
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.61
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.2.10

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98715.json"