[PATCH 5/6] KVM: Don't BUG() the kernel if xa_insert() fails with -EBUSY

Sean Christopherson posted 6 patches 1 month, 2 weeks ago
[PATCH 5/6] KVM: Don't BUG() the kernel if xa_insert() fails with -EBUSY
Posted by Sean Christopherson 1 month, 2 weeks ago
WARN once instead of triggering a BUG if xa_insert() fails because it
encountered an existing entry.  While KVM guarantees there should be no
existing entry, there's no reason to BUG the kernel, as KVM needs to
gracefully handle failure anyways.

Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 virt/kvm/kvm_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index f081839521ef..ae216256ee9d 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -4284,7 +4284,7 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
 
 	vcpu->vcpu_idx = atomic_read(&kvm->online_vcpus);
 	r = xa_insert(&kvm->vcpu_array, vcpu->vcpu_idx, vcpu, GFP_KERNEL_ACCOUNT);
-	BUG_ON(r == -EBUSY);
+	WARN_ON_ONCE(r == -EBUSY);
 	if (r)
 		goto unlock_vcpu_destroy;
 
-- 
2.47.0.rc0.187.ge670bccf7e-goog
Re: [PATCH 5/6] KVM: Don't BUG() the kernel if xa_insert() fails with -EBUSY
Posted by Gupta, Pankaj 1 month, 2 weeks ago
> WARN once instead of triggering a BUG if xa_insert() fails because it
> encountered an existing entry.  While KVM guarantees there should be no
> existing entry, there's no reason to BUG the kernel, as KVM needs to
> gracefully handle failure anyways.
> 
> Signed-off-by: Sean Christopherson <seanjc@google.com>

Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com>

> ---
>   virt/kvm/kvm_main.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index f081839521ef..ae216256ee9d 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -4284,7 +4284,7 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
>   
>   	vcpu->vcpu_idx = atomic_read(&kvm->online_vcpus);
>   	r = xa_insert(&kvm->vcpu_array, vcpu->vcpu_idx, vcpu, GFP_KERNEL_ACCOUNT);
> -	BUG_ON(r == -EBUSY);
> +	WARN_ON_ONCE(r == -EBUSY);
>   	if (r)
>   		goto unlock_vcpu_destroy;
>