]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: vgic: Free private_irqs when init fails after allocation
authorMichael Bommarito <michael.bommarito@gmail.com>
Tue, 19 May 2026 13:50:42 +0000 (09:50 -0400)
committerMarc Zyngier <maz@kernel.org>
Wed, 20 May 2026 07:08:17 +0000 (08:08 +0100)
Companion to commit 250f25367b58 ("KVM: arm64: Tear down vGIC on
failed vCPU creation"), which added the missing kvm_vgic_vcpu_destroy()
call to the kvm_share_hyp() failure path in kvm_arch_vcpu_create(). The
kvm_vgic_vcpu_init() failure path immediately above it has the same
shape and still needs the same cleanup.

Call kvm_vgic_vcpu_destroy() when kvm_vgic_vcpu_init() fails so private
IRQs allocated before a redistributor iodev registration failure are
released before the failed vCPU is freed.

Fixes: 03b3d00a70b5 ("KVM: arm64: vgic: Allocate private interrupts on demand")
Cc: stable@vger.kernel.org
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Yuan Yao <yaoyuan@linux.alibaba.com>
Assisted-by: Claude:claude-opus-4-7
Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Link: https://lore.kernel.org/r/20260519135042.2219239-1-michael.bommarito@gmail.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/arm.c

index 34c9950884d5e6c8292cd722df3d59397ac526f0..9453321ef8c676aacd9bc2d9856b6d7b0cfc7adf 100644 (file)
@@ -555,8 +555,10 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
        kvm_destroy_mpidr_data(vcpu->kvm);
 
        err = kvm_vgic_vcpu_init(vcpu);
-       if (err)
+       if (err) {
+               kvm_vgic_vcpu_destroy(vcpu);
                return err;
+       }
 
        err = kvm_share_hyp(vcpu, vcpu + 1);
        if (err)