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

KVM: SVM: Bump asid_generation 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.

svm_enable_virtualization_cpu() resets asid_generation to 1 and sets
next_asid to max_asid + 1 on every CPU online event, including hotplug
cycles. Because next_asid starts beyond the pool boundary, the first
call to new_asid() after an online event always wraps the pool,
incrementing asid_generation to 2 and assigning ASIDs starting from
min_asid.

Consider two vCPUs from different VMs, vCPU-A pinned to CPU-X holding
asid_generation=2 and ASID=N from before the hotplug event:

1. CPU-X goes offline and back online: asid_generation resets to 1,
next_asid = max_asid + 1.

2. One or more vCPUs migrate to CPU-X and call new_asid(), wrapping
the pool and consuming ASIDs starting from min_asid. Eventually
vCPU-B from a different VM is assigned asid_generation=2, ASID=N
— the same ASID that vCPU-A held before the hotplug.

3. vCPU-A enters pre_svm_run() on CPU-X: current_vmcb->cpu is
unchanged so the migration branch is skipped. Its saved
asid_generation=2 matches sd->asid_generation=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 asid_generation instead of resetting it to 1
in svm_enable_virtualization_cpu(). On module load, asid_generation
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 pre_svm_run() reliably forces new_asid() on every
vCPU after every hotplug cycle.
Published: 2026-08-10
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw occurs in the Linux kernel’s KVM SVM virtualization path when a physical CPU is cycled offline and back online. The code that assigns Address Space Identifiers (ASIDs) resets the ASID generation counter to 1 instead of incrementing it, allowing a virtual CPU that remains unscheduled during the hotplug cycle to resume on the same CPU with an ASID that has already been reassigned to a different virtual CPU. This collision causes stale Translation Lookaside Buffer (TLB) entries to be used, resulting in internal errors that manifest as NPT page faults with faulting guest physical addresses far outside the VM’s memory limits. The emulator then fails to emulate the affected instructions, ending in a KVM internal error that can boot the VM or kill the virtual machine entirely. The vulnerability does not grant direct code execution, but it can lead to unexpected termination or corruption of VM state, effectively a denial of service for the affected virtual machines.

Affected Systems

All Linux kernel builds that implement KVM SVM virtualization are potentially affected, as the bug is present in the generic KVM module without any version restriction listed. Because the issue involves the handling of ASID generation during CPU hotplug events, any environment that uses Linux with KVM and experiences hotplugging of CPUs may be exposed. No specific product or release numbers are documented in the advisories.

Risk and Exploitability

The CVSS, EPSS, and KEV metrics are not publicly available for this issue, so the exact severity score cannot be quoted. However, the exploitability hinges on an attacker’s ability to trigger a CPU hotplug cycle while one or more virtual CPUs remain unscheduled or blocked on the CPU that is reactivated. The effect is a crash or forced failure of the affected VM or the hypervisor’s emulation layer rather than arbitrary code execution on the host. In environments that rely on CPU hotplug for capacity management or fault tolerance, the failure could impact service availability. The lack of a KEV listing suggests no current widespread exploitation, but the high potential for disruptive impact warrants prompt attention.

Generated by OpenCVE AI on August 10, 2026 at 13:26 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the ASID generation fix for KVM SVM virtualization
  • Configure KVM hosts to avoid performing physical CPU hotplug operations while virtual machines are running or to ensure virtual CPUs are actively scheduled during the cycle
  • If hotplug is required, make sure virtual CPUs are rebound or migrated to a different CPU before the hotplug event to avoid ASID reuse conflicts

Generated by OpenCVE AI on August 10, 2026 at 13:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 13:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-200
CWE-676

Mon, 10 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: SVM: Bump asid_generation 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. svm_enable_virtualization_cpu() resets asid_generation to 1 and sets next_asid to max_asid + 1 on every CPU online event, including hotplug cycles. Because next_asid starts beyond the pool boundary, the first call to new_asid() after an online event always wraps the pool, incrementing asid_generation to 2 and assigning ASIDs starting from min_asid. Consider two vCPUs from different VMs, vCPU-A pinned to CPU-X holding asid_generation=2 and ASID=N from before the hotplug event: 1. CPU-X goes offline and back online: asid_generation resets to 1, next_asid = max_asid + 1. 2. One or more vCPUs migrate to CPU-X and call new_asid(), wrapping the pool and consuming ASIDs starting from min_asid. Eventually vCPU-B from a different VM is assigned asid_generation=2, ASID=N — the same ASID that vCPU-A held before the hotplug. 3. vCPU-A enters pre_svm_run() on CPU-X: current_vmcb->cpu is unchanged so the migration branch is skipped. Its saved asid_generation=2 matches sd->asid_generation=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 asid_generation instead of resetting it to 1 in svm_enable_virtualization_cpu(). On module load, asid_generation 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 pre_svm_run() reliably forces new_asid() on every vCPU after every hotplug cycle.
Title KVM: SVM: Bump asid_generation on CPU online to avoid ASID collision after hotplug
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-10T11:58:05.933Z

Reserved: 2026-07-30T09:28:09.367Z

Link: CVE-2026-68093

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T14:30:03Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor

  • CWE-676

    Use of Potentially Dangerous Function