| From 467215a04d2f458c3716196f42bddf6aa07d9985 Mon Sep 17 00:00:00 2001 |
| From: Sean Christopherson <sean.j.christopherson@intel.com> |
| Date: Wed, 18 Dec 2019 13:54:46 -0800 |
| Subject: [PATCH] KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails |
| |
| commit 1a978d9d3e72ddfa40ac60d26301b154247ee0bc upstream. |
| |
| Call kvm_vcpu_uninit() if vcore creation fails to avoid leaking any |
| resources allocated by kvm_vcpu_init(), i.e. the vcpu->run page. |
| |
| Fixes: 371fefd6f2dc4 ("KVM: PPC: Allow book3s_hv guests to use SMT processor modes") |
| Cc: stable@vger.kernel.org |
| Reviewed-by: Greg Kurz <groug@kaod.org> |
| Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> |
| Acked-by: Paul Mackerras <paulus@ozlabs.org> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c |
| index f8975c620f41..a46f93045fea 100644 |
| --- a/arch/powerpc/kvm/book3s_hv.c |
| +++ b/arch/powerpc/kvm/book3s_hv.c |
| @@ -2351,7 +2351,7 @@ static struct kvm_vcpu *kvmppc_core_vcpu_create_hv(struct kvm *kvm, |
| mutex_unlock(&kvm->lock); |
| |
| if (!vcore) |
| - goto free_vcpu; |
| + goto uninit_vcpu; |
| |
| spin_lock(&vcore->lock); |
| ++vcore->num_threads; |
| @@ -2368,6 +2368,8 @@ static struct kvm_vcpu *kvmppc_core_vcpu_create_hv(struct kvm *kvm, |
| |
| return vcpu; |
| |
| +uninit_vcpu: |
| + kvm_vcpu_uninit(vcpu); |
| free_vcpu: |
| kmem_cache_free(kvm_vcpu_cache, vcpu); |
| out: |
| -- |
| 2.7.4 |
| |