From: Will Deacon Date: Mon, 30 Mar 2026 14:48:03 +0000 (+0100) Subject: KVM: arm64: Don't leak stage-2 page-table if VM fails to init under pKVM X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5e66f723d4de432a5acb481293d81dc88c7f61a4;p=thirdparty%2Fkernel%2Flinux.git KVM: arm64: Don't leak stage-2 page-table if VM fails to init under pKVM If pkvm_init_host_vm() fails, we should free the stage-2 page-table previously allocated by kvm_init_stage2_mmu(). Cc: Fuad Tabba Reviewed-by: Fuad Tabba Tested-by: Fuad Tabba Tested-by: Mostafa Saleh Fixes: 07aeb70707b1 ("KVM: arm64: Reserve pKVM handle during pkvm_init_host_vm()") Signed-off-by: Will Deacon Link: https://patch.msgid.link/20260330144841.26181-3-will@kernel.org Signed-off-by: Marc Zyngier --- diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 410ffd41fd73a..3589fc08266cf 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -236,7 +236,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) */ ret = pkvm_init_host_vm(kvm); if (ret) - goto err_free_cpumask; + goto err_uninit_mmu; } kvm_vgic_early_init(kvm); @@ -252,6 +252,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) return 0; +err_uninit_mmu: + kvm_uninit_stage2_mmu(kvm); err_free_cpumask: free_cpumask_var(kvm->arch.supported_cpus); err_unshare_kvm: