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

KVM: arm64: Handle VNCR TLB invalidation race with vcpu_put() VNCR unmapping

While VNCR TLB invalidation always occurs under the MMU lock,
vcpu_put() doesn't, while it unmaps the VNCR page.

The problem is that the invalidation evaluates vncr_tlb::cpu to
decide whether an unmapping needs to take place (cpu != -1) before
performing it. On the other hand, this_cpu_reset_vncr_fixmap()
unconditionally unmaps if L1_VNCR_MAPPED is set.

These two obviously can race, with a TOCTOU pattern on the TLBI
path, and a BUG_ON() on the vcpu_put() path. And the two can end-up
calling vncr_fixmap(-1), with extra lethal effects.

Move the reset of vncr_tlb::cpu to -1 to a common function, and make
this update atomic so that only a single thread can reset the field
and perform the corresponding unmap. The vcpu_put() still need to
unconditionally unmap the current VNCR to close another ugly race.

Finally, the assignment of vncr_tlb::cpu is moved to be kept in sync
with the actual mapping, similar to L1_VNCR_MAPPED being set.
Published: 2026-09-16
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via kernel crash
Action: Apply Patch
AI Analysis

Impact

The vulnerability is a race condition between the VNCR TLB invalidation routine and the vcpu_put() function in the arm64 KVM implementation. Because the VNCR page mapping state is updated without atomicity, a thread can observe a stale value, trigger an unnecessary unmap, and cause a BUG_ON assertion. The resulting kernel panic results in a complete system crash, interrupting all services running on the host.

Affected Systems

Linux systems running an arm64 kernel that includes the KVM module and have not incorporated the commit that fixes the VNCR race. No specific kernel version ranges are listed, therefore any arm64 kernel build lacking the fix should be considered vulnerable until a patched release is deployed.

Risk and Exploitability

The EPSS score is below 1 % and the vulnerability is not included in CISA’s KEV catalog, suggesting a very low probability of exploitation. However, the impact is severe, as a single triggered race can crash the kernel. The attack vector is inferred to require local access to a host with KVM enabled and the ability to influence virtual CPU state; the exact privilege level needed is not specified.

Generated by OpenCVE AI on September 18, 2026 at 07:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Install the latest Linux kernel that contains the upstream commit resolving the VNCR TLB race and ensure the KVM module is built from that source.
  • Configure the system’s bootloader to load the patched kernel by default and restart the system to use the updated kernel configuration.
  • If you maintain custom kernel branches or apply your own local patches, backport the VNCR TLB fix from upstream and rebuild the kernel without reverting the change.

Generated by OpenCVE AI on September 18, 2026 at 07:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 18 Sep 2026 08:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Wed, 16 Sep 2026 10:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Handle VNCR TLB invalidation race with vcpu_put() VNCR unmapping While VNCR TLB invalidation always occurs under the MMU lock, vcpu_put() doesn't, while it unmaps the VNCR page. The problem is that the invalidation evaluates vncr_tlb::cpu to decide whether an unmapping needs to take place (cpu != -1) before performing it. On the other hand, this_cpu_reset_vncr_fixmap() unconditionally unmaps if L1_VNCR_MAPPED is set. These two obviously can race, with a TOCTOU pattern on the TLBI path, and a BUG_ON() on the vcpu_put() path. And the two can end-up calling vncr_fixmap(-1), with extra lethal effects. Move the reset of vncr_tlb::cpu to -1 to a common function, and make this update atomic so that only a single thread can reset the field and perform the corresponding unmap. The vcpu_put() still need to unconditionally unmap the current VNCR to close another ugly race. Finally, the assignment of vncr_tlb::cpu is moved to be kept in sync with the actual mapping, similar to L1_VNCR_MAPPED being set.
Title KVM: arm64: Handle VNCR TLB invalidation race with vcpu_put() VNCR unmapping
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-09-16T10:32:12.629Z

Reserved: 2026-09-11T19:38:34.775Z

Link: CVE-2026-89917

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-16T11:17:00.763

Modified: 2026-09-16T11:17:00.763

Link: CVE-2026-89917

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-18T08:00:06Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')