[PATCH 0/3] KVM: arm64: vgic: Fixes for ITS table save and init retry
Fuad Tabba <[email protected]> Wed, 5 Aug 2026 10:38:25 +0100
| Newsgroups | dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi folks, Three unrelated vgic fixes. These came out of reviewing the GIC-related postings on the list lately, from Sebastian's ITS hardening series [1] to Sascha's GICv5 IRS series [2]. These three are from the ITS table save paths and vgic init. Stare into the GIC long enough and it stares back! The first is the one that matters the most. A guest that issues MAPD, MAPTI and then MAPC(V=0) leaves an ITE mapped with no collection, and the next KVM_DEV_ARM_ITS_SAVE_TABLES from the VMM oopses the host. That is three ITS commands and an ordinary migration save, with no race and no allocation failure. The other two are weaker and come after it. The init fix stops the SPI array leaking when userspace retries KVM_DEV_ARM_VGIC_CTRL_INIT after a failure. The collection table fix bounds a walk that a guest can drive past the end of the table KVM computed, which stays inside guest memory, so the guest only corrupts itself. Its error code is a judgement call, and the commit message says which one and why. The first and the last are reproduced, each with a selftest that fails on an unfixed kernel and passes on a fixed one. Those are not part of this series, happy to post them separately if they are worth having. The init leak needs an observed allocation failure rather than a crash, so there is no reproducer for it. Based on Linux 7.2-rc6 (075b74841bd00). Cheers, /fuad [1] https://lore.kernel.org/all/[email protected]/ [2] https://lore.kernel.org/all/[email protected]/ Fuad Tabba (3): KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save KVM: arm64: vgic: Don't leak the SPI array when init is retried KVM: arm64: vgic-its: Don't write past the end of the collection table arch/arm64/kvm/vgic/vgic-init.c | 3 +++ arch/arm64/kvm/vgic/vgic-its.c | 11 +++++++++++ 2 files changed, 14 insertions(+) base-commit: 075b74841bd0065a3bda3440873c747938e69b68 -- 2.39.5