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

KVM: arm64: vgic: Check the interrupt is still ours before migrating it

vgic_prune_ap_list() drops both ap_list_lock and irq_lock while migrating
an interrupt to another vCPU. After reacquiring the locks it only checks
that the affinity is unchanged (target_vcpu == vgic_target_oracle(irq))
before moving the interrupt, which assumes that an interrupt whose affinity
is preserved is still queued on this vCPU's ap_list.

That assumption no longer holds if the interrupt is taken off the ap_list
while the locks are dropped. vgic_flush_pending_lpis() removes the
interrupt from the list and sets irq->vcpu to NULL, but leaves
enabled/pending/target_vcpu untouched. As the interrupt is still enabled
and pending, vgic_target_oracle() returns the same target_vcpu, so the
affinity check passes and list_del() is run a second time on an entry that
has already been removed.

Also check that the interrupt is still assigned to this vCPU
(irq->vcpu == vcpu) before moving it.
Published: 2026-08-15
Score: 9.3 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability occurs in the arm64 Virtual Generic Interrupt Controller (VGIC) implementation of the Linux kernel. When migrating an interrupt between virtual CPUs, the code releases both the interrupt list lock (ap_list_lock) and the IRQ lock (irq_lock) before reacquiring them. It then only verifies that the interrupt’s affinity remains unchanged (target_vcpu == vgic_target_oracle(irq)) before performing the list removal. If, while the locks are released, the interrupt is taken off the pending list by vgic_flush_pending_lpis(), the subsequent affinity check passes even though the interrupt has already been removed. A second list_del() call on an already removed entry corrupts kernel memory, which can lead to a kernel panic and bring the host down.

Affected Systems

Linux kernel builds that run the KVM hypervisor on ARM‑64 architectures and that include the unpatched VGIC code are vulnerable. All such kernels lacking the repository commit that introduces the missing reassignment check are affected; no specific vendor or version range is indicated, so the risk applies broadly to all older or custom arm64 builds not containing the fix.

Risk and Exploitability

The flaw is a race condition that can corrupt kernel memory, leading to a high CVSS score of 9.3. The EPSS score of < 1% indicates a very low probability of exploitation in the wild. The vulnerability is not listed in the CISA KEV catalog. The most likely attack vector is a malicious guest virtual machine that manipulates interrupt state to trigger the race; this inference is based on the KVM exposure of interrupt handling to guest code. Successful exploitation would cause a host crash; if an attacker can control additional kernel execution they might elevate privileges, though no public exploit is known.

Generated by OpenCVE AI on August 22, 2026 at 08:17 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that contains the patch fixing the vgic_prune_ap_list and vgic_flush_pending_lpis race condition.
  • Reboot the host after upgrading to ensure the kernel takes effect.
  • Monitor host stability and log guest activity for signs of kernel panics or abnormal interrupt handling, and apply stricter isolation policies if necessary.

Generated by OpenCVE AI on August 22, 2026 at 08:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 22 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Wed, 19 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1341
References
Metrics threat_severity

None

threat_severity

Important


Mon, 17 Aug 2026 20:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Mon, 17 Aug 2026 17:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 9.3, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H'}


Sat, 15 Aug 2026 11:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Sat, 15 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic: Check the interrupt is still ours before migrating it vgic_prune_ap_list() drops both ap_list_lock and irq_lock while migrating an interrupt to another vCPU. After reacquiring the locks it only checks that the affinity is unchanged (target_vcpu == vgic_target_oracle(irq)) before moving the interrupt, which assumes that an interrupt whose affinity is preserved is still queued on this vCPU's ap_list. That assumption no longer holds if the interrupt is taken off the ap_list while the locks are dropped. vgic_flush_pending_lpis() removes the interrupt from the list and sets irq->vcpu to NULL, but leaves enabled/pending/target_vcpu untouched. As the interrupt is still enabled and pending, vgic_target_oracle() returns the same target_vcpu, so the affinity check passes and list_del() is run a second time on an entry that has already been removed. Also check that the interrupt is still assigned to this vCPU (irq->vcpu == vcpu) before moving it.
Title KVM: arm64: vgic: Check the interrupt is still ours before migrating it
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-17T05:42:24.760Z

Reserved: 2026-08-09T03:40:39.917Z

Link: CVE-2026-72289

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:22:00.630

Modified: 2026-08-17T06:18:31.673

Link: CVE-2026-72289

cve-icon Redhat

Severity : Important

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-72289 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T08:30:17Z

Weaknesses
  • CWE-1341

    Multiple Releases of Same Resource or Handle