UBUNTU-CVE-2026-89913: High severity ubuntu/linux-azure vulnerability
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-v3: take an LPI reference in vgicv3savependingtables vgicv3savependingtables() iterates dist->lpixa using xaforeach() and dereferences the returned struct vgicirq in the loop body without holding a reference on the LPI. The xarray iterator only provides temporary RCU coverage while looking up the current entry. That is not sufficient for this loop body, which reads fields from struct vgicirq and performs guest memory accesses before the iteration completes. A concurrent path can trigger this race: the irqfd cached injection path (vgicitsinjectcachedtranslation) obtains a transient LPI reference via vgicitscheckcache() without holding kvm->lock, vcpu->mutex, configlock, or itslock. If guest ITS DISCARD then drops the cache and ITE references under itslock, the transient inject reference may become the final one. When vgicputirq() drops it, the LPI is erased from lpixa and freed via kfreercu(). Meanwhile, vgicv3savependingtables() may still hold a stale pointer obtained from the xarray iterator and dereference it after the RCU grace period completes. Fix this by re-fetching each iterated LPI via vgicgetirq(), which takes a stable reference, and dropping it with vgicputirq() on all paths. This matches the pattern already used by other lpixa iterators in the vgic ITS code.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In the Linux kernel VGIC LPI iteration paths, re-fetch each iterated LPI with vgic_get_irq() to obtain a stable reference and call vgic_put_irq() on all paths, including vgic_its_inject_cached_translation() and vgic_v3_save_pending_tables().