]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
KVM: arm64: Don't leave mmu->pgt dangling on kvm_init_stage2_mmu() error
authorWill Deacon <will@kernel.org>
Fri, 27 Mar 2026 19:27:56 +0000 (19:27 +0000)
committerMarc Zyngier <maz@kernel.org>
Wed, 1 Apr 2026 15:48:16 +0000 (16:48 +0100)
commit2fc0f3e2b9a9f397554ffe86e8f6eb0e2507ec6e
tree6c4da2b5d4be5a7fc132521b40b48b3d63d24067
parentcf6348af645bd8e38758114e6afcc406c5bb515f
KVM: arm64: Don't leave mmu->pgt dangling on kvm_init_stage2_mmu() error

If kvm_init_stage2_mmu() fails to allocate 'mmu->last_vcpu_ran', it
destroys the newly allocated stage-2 page-table before returning ENOMEM.

Unfortunately, it also leaves a dangling pointer in 'mmu->pgt' which
points at the freed 'kvm_pgtable' structure. This is likely to confuse
the kvm_vcpu_init_nested() failure path which can double-free the
structure if it finds it via kvm_free_stage2_pgd().

Ensure that the dangling 'mmu->pgt' pointer is cleared when returning an
error from kvm_init_stage2_mmu().

Link: https://sashiko.dev/#/patchset/20260327140039.21228-1-will%40kernel.org?patch=12265
Signed-off-by: Will Deacon <will@kernel.org>
Link: https://patch.msgid.link/20260327192758.21739-2-will@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/mmu.c