Re: [PATCH v2 3/4] KVM: arm64: vgic: Tear down what vgic_init() created when it fails
Fuad Tabba <[email protected]>
| Newsgroups | org.infradead.lists.linux-arm-kernel,dev.linux.lists.kvmarm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CA+EHjTyYkz5=BV7RfJK_uUuuRunsfSNWmNNrkJ8NdsR_i5NB2g@mail.gmail.com> |
Hi Yuan, On Tue, 25 Aug 2026 at 10:18, Yao Yuan <[email protected]> wrote: ... > > diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c > > index 4012df6002ea6..7493fded53acc 100644 > > --- a/arch/arm64/kvm/vgic/vgic-init.c > > +++ b/arch/arm64/kvm/vgic/vgic-init.c > > @@ -462,7 +462,7 @@ int vgic_init(struct kvm *kvm) > > if (vgic_supports_direct_irqs(kvm)) { > > ret = vgic_v4_init(kvm); > > if (ret) > > Hi Tabba, > > > - return ret; > > + goto out_teardown; > > The vigc_v4_init already called vgic_v4_teardown() in error path, > thus I think just free dist->spis is enough yet ? vgic_v4_init() unwinds its own state on every error return, so vgic_v4_teardown() is a no-op there and freeing the SPI array would be enough. I'll fold the label split in if I respin. Thanks for the reviews! /fuad > > > } > > } else { > > ret = vgic_v5_init(kvm); > > @@ -475,12 +475,19 @@ int vgic_init(struct kvm *kvm) > > > > ret = kvm_vgic_setup_default_irq_routing(kvm); > > if (ret) > > - return ret; > > + goto out_teardown; > > > > vgic_debug_init(kvm); > > dist->initialized = true; > > > > return 0; > > + > > +out_teardown: > > + vgic_v4_teardown(kvm); > > + kfree(dist->spis); > > + dist->spis = NULL; > > + > > + return ret; > > } > > > > static void kvm_vgic_dist_destroy(struct kvm *kvm) > > -- > > 2.39.5 > >