{"id":24600,"date":"2026-09-16T20:32:31","date_gmt":"2026-09-16T12:32:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89913"},"modified":"2026-09-16T20:32:31","modified_gmt":"2026-09-16T12:32:31","slug":"cve-2026-89913","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89913","title":{"rendered":"CVE-2026-89913 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: arm64: vgic-v3:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: arm64: vgic-v3: take an LPI reference in vgic_v3_save_pending_tables<\/p>\n<p>vgic_v3_save_pending_tables() iterates dist-&gt;lpi_xa using xa_for_each()<br \/>\nand dereferences the returned struct vgic_irq in the loop body without<br \/>\nholding a reference on the LPI.<\/p>\n<p>The xarray iterator only provides temporary RCU coverage while looking up<br \/>\nthe current entry. That is not sufficient for this loop body, which reads<br \/>\nfields from struct vgic_irq and performs guest memory accesses before the<br \/>\niteration completes.<\/p>\n<p>A concurrent path can trigger this race: the irqfd cached injection path<br \/>\n(vgic_its_inject_cached_translation) obtains a transient LPI reference<br \/>\nvia vgic_its_check_cache() without holding kvm-&gt;lock, vcpu-&gt;mutex,<br \/>\nconfig_lock, or its_lock. If guest ITS DISCARD then drops the cache and<br \/>\nITE references under its_lock, the transient inject reference may become<br \/>\nthe final one. When vgic_put_irq() drops it, the LPI is erased from<br \/>\nlpi_xa and freed via kfree_rcu(). Meanwhile, vgic_v3_save_pending_tables()<br \/>\nmay still hold a stale pointer obtained from the xarray iterator and<br \/>\ndereference it after the RCU grace period completes.<\/p>\n<p>Fix this by re-fetching each iterated LPI via vgic_get_irq(), which takes<br \/>\na stable reference, and dropping it with vgic_put_irq() on all paths.<br \/>\nThis matches the pattern already used by other lpi_xa iterators in the<br \/>\nvgic ITS code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: arm64: vgic-v3: take an LPI reference in vgic_v3_save_pending_tables<\/p>\n<p>vgic_v3_save_pending_tables() iterates dist-&gt;lpi_xa usin<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24600","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}