Re: [PATCH v1] KVM: arm64: vgic: Reset in_kernel on private IRQ allocation failure

Marc Zyngier <[email protected]>
Newsgroups org.kernel.vger.stable,dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sun, 02 Aug 2026 16:08:45 +0100,
Fuad Tabba <[email protected]> wrote:
> 
> kvm_vgic_create() sets vgic.in_kernel before allocating the per-vCPU
> private IRQs, but the allocation-failure path resets only vgic_model and
> leaves in_kernel set. As irqchip_in_kernel() is !!in_kernel, the VM is
> left with an in-kernel irqchip but no model, and the -EEXIST guard at the
> top of kvm_vgic_create() rejects every retry, so userspace cannot recover
> from a transient -ENOMEM.
> 
> Reset in_kernel alongside vgic_model on the failure path.
> 
> Fixes: 9435c1e1431003 ("KVM: arm64: gic: Set vgic_model before initing private IRQs")
> Cc: [email protected]
> Signed-off-by: Fuad Tabba <[email protected]>
> ---
>  arch/arm64/kvm/vgic/vgic-init.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c
> index 907057881b26a..fdac6e24762da 100644
> --- a/arch/arm64/kvm/vgic/vgic-init.c
> +++ b/arch/arm64/kvm/vgic/vgic-init.c
> @@ -176,6 +176,7 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
>  		}
>  
>  		kvm->arch.vgic.vgic_model = 0;
> +		kvm->arch.vgic.in_kernel = false;
>  		goto out_unlock;
>  	}
>  
> 

Acked-by: Marc Zyngier <[email protected]>

	M.

-- 
Jazz isn't dead. It just smells funny.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.