[PATCH v4 1/2] KVM: arm64: Clear the VM's feature bitmap when kvm_setup_vcpu() fails

Fuad Tabba fuad.tabba at linux.dev
Mon Nov 2 01:42:24 PST 2026


Hi Suzuki,

On Mon, 02 Nov 2026 09:24:15 +0000, Suzuki K Poulose
<suzuki.poulose at arm.com> wrote:
[...]
> > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
[...]
> > @@ -1856,8 +1856,13 @@ static int __kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
> >          bitmap_copy(kvm->arch.vcpu_features, &features, KVM_VCPU_MAX_FEATURES);
> >
> >          ret = kvm_setup_vcpu(vcpu);
> > -        if (ret)
> > +        if (ret) {
> > +                /* Clear the bitmap if setup fails on the first vCPU to be initialized. */
> > +                if (!test_bit(KVM_ARCH_FLAG_VCPU_FEATURES_CONFIGURED, &kvm->arch.flags))
>
> Is this check necessary ? We go into kvm_setup_vcpu() only if the bit is
> cleared and we do this under the config_lock mutex. The flag is only set
> after we have finished the kvm_setup_vcpu() successfully, later down.

It is. An INIT on a second vCPU with the same features also calls
kvm_setup_vcpu(), with the flag already set, and
kvm_vcpu_init_nested() can return -ENOMEM there.

Thanks,
/fuad



More information about the linux-arm-kernel mailing list