Skip to content
CVE PROGRAM SOURCE RECORD8.2 High

CVE-2026-64287

KVM: arm64: Bound used_lrs when flushing the pKVM hyp vCPU

Description

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Bound used_lrs when flushing the pKVM hyp vCPU flush_hyp_vcpu() copies the host vGIC state into the hyp's private vCPU on every run. The vGIC list register save and restore use used_lrs as their loop bound and expect it to stay within the number of implemented list registers. While this is generally the case, flush_hyp_vcpu() copies vgic_v3 verbatim and does not enforce this, so a value provided by the host is used at EL2 to index vgic_lr[] and access ICH_LR<n>_EL2 (host -> EL2). Fix by clamping used_lrs to the number of implemented list registers after the copy, as the trusted path already does in vgic_flush_lr_state(). The number of implemented list registers is constant after init, so it is replicated once from kvm_vgic_global_state.nr_lr into hyp_gicv3_nr_lr rather than read on every entry.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • be66e67f175096f283c9d5614c4991fc9e7ed975 to < 2c5e72b9fbf83fdfa724e9f1af0f418ccf8739b8affected
  • be66e67f175096f283c9d5614c4991fc9e7ed975 to < 9fa301d8298778dd799fa4dcf7a7f440715d146eaffected
  • be66e67f175096f283c9d5614c4991fc9e7ed975 to < c646431865f4b1a5b14067233fa27b11e05e0d46affected
  • be66e67f175096f283c9d5614c4991fc9e7ed975 to < 7fca3fcef81c713bc82a37bf741e0f28e6d04a6faffected
  • be66e67f175096f283c9d5614c4991fc9e7ed975 to < 8cc8bbbfab14c22c5551d0dd19b208a44b141c76affected

Linux Linux

Default version status: affected

  • 6.2affected
  • 0 to < 6.2unaffected
  • 6.6.145 to ≤ 6.6.*unaffected
  • 6.12.97 to ≤ 6.12.*unaffected
  • 6.18.40 to ≤ 6.18.*unaffected
  • 7.1.4 to ≤ 7.1.*unaffected
  • 7.2 to ≤ *unaffected

References