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

KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry

vgic_its_invalidate_cache() walks the per-ITS translation cache with
xa_for_each() and drops the cache's reference on each entry with
vgic_put_irq(). It puts the iterated pointer, though, rather than the
value returned by xa_erase().

The function is called from contexts that do not exclude one another: the
ITS command handlers hold its_lock, the GITS_CTLR write path holds
cmd_lock, and the path that clears EnableLPIs in a redistributor's
GICR_CTLR holds neither. Two or more of them can drain the same cache
concurrently, and if each one observes the same entry, erases it and then
puts it, the single reference the cache holds on that entry is dropped
more than once. The entry can then be freed while an ITE still maps it.

xa_erase() is atomic and returns the previous entry, so put only the entry
that this context actually removed. The cache reference is then dropped
exactly once per entry even when the invalidations run concurrently, and
the behavior is unchanged when only one context runs.
Published: 2026-06-09
Score: 9.3 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Kernel memory corruption and potential denial of service
Action: Apply Patch
AI Analysis

Impact

The vulnerability involves the Linux kernel's KVM arm64 implementation of the virtual generic interrupt controller (VGIC) peripheral‑ITS translation cache. During cache invalidation, the code drops a reference to an entry using the iterator pointer instead of the previously erased value. When multiple concurrent contexts invalidate the same entry, the reference may be dropped more than once, leading to a double‑free. The resulting kernel use‑after‑free can corrupt memory or trigger a crash, leading to denial of service. The CVE description does not claim arbitrary code execution; it only highlights potential kernel instability.

Affected Systems

The flaw resides in the Linux kernel, affecting all distributions that ship the unpatched arm64 KVM VGIC ITS code. The available CPE identifier indicates the kernel as the affected component, but no specific version range is provided in the CNA data. Users should verify whether their kernel includes the commit that fixes the reference‑dropping logic.

Risk and Exploitability

Open source kernel code, the CVSS score of 9.3 reflects critical severity. The EPSS score of < 1% indicates a very low exploitation probability. The vulnerability is not listed in the CISA KEV catalog. The likely attack vector, inferred from the description, involves concurrent ITS cache invalidation contexts – such as ITS command handlers, GITS_CTLR write paths, or GICR_CTLR paths – that can trigger the double‑free. If these contexts are reachable, the bug could lead to a kernel crash, causing denial of service.

Generated by OpenCVE AI on October 20, 2026 at 01:30 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a kernel update that includes the patch correcting the VGIC ITS cache reference handling; the referenced Git commits provide the fix
  • Reboot the system to load the updated kernel and ensure the fix is active
  • Monitor system logs for any VGIC‑related kernel messages that could indicate misbehavior and adjust KVM configuration if necessary

Generated by OpenCVE AI on October 20, 2026 at 01:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6355-1 linux security update
Ubuntu USN Ubuntu USN USN-8488-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8489-1 Linux kernel (OEM) vulnerabilities
Ubuntu USN Ubuntu USN USN-8490-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8491-1 Linux kernel (OEM) vulnerabilities
Ubuntu USN Ubuntu USN USN-8488-2 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-8507-1 Linux kernel (NVIDIA) vulnerabilities
Ubuntu USN Ubuntu USN USN-8508-1 Linux kernel (NVIDIA) vulnerabilities
Ubuntu USN Ubuntu USN USN-8490-2 Linux kernel (Real-time) vulnerabilities
Ubuntu USN Ubuntu USN USN-8545-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-8546-1 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-8569-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8604-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8605-1 Linux kernel (Azure CVM) vulnerabilities
Ubuntu USN Ubuntu USN USN-8728-1 Linux kernel (GCP) vulnerabilities
Ubuntu USN Ubuntu USN USN-8728-2 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8728-3 Linux kernel (Oracle) vulnerabilities
History

Mon, 19 Oct 2026 20:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Sun, 14 Jun 2026 05:45:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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

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'}


Wed, 10 Jun 2026 02:30:00 +0000

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

Wed, 10 Jun 2026 00:15:00 +0000

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

None

cvssV3_1

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

threat_severity

Moderate


Tue, 09 Jun 2026 14:15:00 +0000

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

Tue, 09 Jun 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry vgic_its_invalidate_cache() walks the per-ITS translation cache with xa_for_each() and drops the cache's reference on each entry with vgic_put_irq(). It puts the iterated pointer, though, rather than the value returned by xa_erase(). The function is called from contexts that do not exclude one another: the ITS command handlers hold its_lock, the GITS_CTLR write path holds cmd_lock, and the path that clears EnableLPIs in a redistributor's GICR_CTLR holds neither. Two or more of them can drain the same cache concurrently, and if each one observes the same entry, erases it and then puts it, the single reference the cache holds on that entry is dropped more than once. The entry can then be freed while an ITE still maps it. xa_erase() is atomic and returns the previous entry, so put only the entry that this context actually removed. The cache reference is then dropped exactly once per entry even when the invalidations run concurrently, and the behavior is unchanged when only one context runs.
Title KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry
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-10-19T19:36:57.668Z

Reserved: 2026-05-13T15:03:33.112Z

Link: CVE-2026-46316

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Modified

Published: 2026-06-09T13:16:36.887

Modified: 2026-10-19T20:18:42.060

Link: CVE-2026-46316

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-06-09T00:00:00Z

Links: CVE-2026-46316 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-20T01:30:07Z

Weaknesses
  • CWE-362

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

  • CWE-911

    Improper Update of Reference Count

  • NVD-CWE-Other