CVE-2026-68093: KVM: SVM: Bump asid_generation on CPU online to avoid ASID collision after hotplug
In the Linux kernel, the following vulnerability has been resolved:
KVM: SVM: Bump asidgeneration on CPU online to avoid ASID collision after hotplug
If a vCPU stays scheduled out (or blocked) while the last pCPU it ran on goes through a hotplug cycle (online->offline->online), and the vCPU then resumes execution on the same pCPU, then it is possible for it to run with an ASID that has now been assigned to a different vCPU, resulting in stale TLB translations being used.
svmenablevirtualizationcpu() resets asidgeneration to 1 and sets nextasid to maxasid + 1 on every CPU online event, including hotplug cycles. Because nextasid starts beyond the pool boundary, the first call to newasid() after an online event always wraps the pool, incrementing asidgeneration to 2 and assigning ASIDs starting from minasid.
Consider two vCPUs from different VMs, vCPU-A pinned to CPU-X holding asidgeneration=2 and ASID=N from before the hotplug event:
1. CPU-X goes offline and back online: asidgeneration resets to 1, nextasid = maxasid + 1.
2. One or more vCPUs migrate to CPU-X and call newasid(), wrapping the pool and consuming ASIDs starting from minasid. Eventually vCPU-B from a different VM is assigned asidgeneration=2, ASID=N — the same ASID that vCPU-A held before the hotplug.
3. vCPU-A enters presvmrun() on CPU-X: currentvmcb->cpu is unchanged so the migration branch is skipped. Its saved asidgeneration=2 matches sd->asidgeneration=2, so the generation check silently passes and vCPU-A continues running with ASID=N — the same ASID just freshly assigned to vCPU-B.
Both vCPUs from different VMs now run on CPU-X with the same ASID, causing them to share NPT TLB entries and producing stale translations.
The collision manifests as a KVM internal error (Suberror: 1, emulation failure). The NPT page fault reports a faulting GPA far outside the VM's physical memory range — a sign of stale TLB translations being used. KVM falls back to instruction emulation, which fails on FPU/XSave instructions (XRSTOR, STMXCSR) that the emulator does not implement.
Fix this by incrementing asidgeneration instead of resetting it to 1 in svmenablevirtualizationcpu(). On module load, asidgeneration starts at 0 (memset) and the increment produces 1, identical to the old behaviour. On subsequent hotplug cycles the generation advances beyond any value a vCPU previously observed on this CPU, so the generation check in presvmrun() reliably forces newasid() on every vCPU after every hotplug cycle.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
KVM: SVM (vmcb/asid_generation)to a version that resolves this vulnerability.Patch KVM: SVM: Bump asid_generation on CPU online to avoid ASID collision after hotplug
Event History
Frequently Asked Questions
What is the severity of CVE-2026-68093?
CVE-2026-68093 has a risk rating of 51, indicating a medium severity vulnerability.
How do I fix CVE-2026-68093?
To fix CVE-2026-68093, ensure that you update your Linux kernel to the latest version where this vulnerability has been patched.
What systems are affected by CVE-2026-68093?
CVE-2026-68093 affects systems running the Linux kernel with KVM support, particularly when using SVM.
What is the impact of CVE-2026-68093?
The impact of CVE-2026-68093 could lead to ASID collisions that may disrupt the normal operation of virtual CPUs.
Is there a workaround for CVE-2026-68093?
Currently, there is no known workaround for CVE-2026-68093 other than applying the security update.