In the Linux kernel, the following vulnerability has been resolved:
KVM: arm64: Bound used_lrs when flushing the pKVM hyp vCPU
flushhypvcpu() copies the host vGIC state into the hyp's private vCPU on every run. The vGIC list register save and restore use usedlrs as their loop bound and expect it to stay within the number of implemented list registers. While this is generally the case, flushhypvcpu() copies vgicv3 verbatim and does not enforce this, so a value provided by the host is used at EL2 to index vgiclr[] and access ICHLR<n>_EL2 (host -> EL2).
Fix by clamping usedlrs to the number of implemented list registers after the copy, as the trusted path already does in vgicflushlrstate(). The number of implemented list registers is constant after init, so it is replicated once from kvmvgicglobalstate.nrlr into hypgicv3nr_lr rather than read on every entry.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64287.json",
"cna_assigner": "Linux"
}