| From cb10bf9194f4d2c5d830eddca861f7ca0fecdbb4 Mon Sep 17 00:00:00 2001 |
| From: Sean Christopherson <sean.j.christopherson@intel.com> |
| Date: Wed, 18 Dec 2019 13:54:47 -0800 |
| Subject: KVM: PPC: Book3S PR: Free shared page if mmu initialization fails |
| |
| From: Sean Christopherson <sean.j.christopherson@intel.com> |
| |
| commit cb10bf9194f4d2c5d830eddca861f7ca0fecdbb4 upstream. |
| |
| Explicitly free the shared page if kvmppc_mmu_init() fails during |
| kvmppc_core_vcpu_create(), as the page is freed only in |
| kvmppc_core_vcpu_free(), which is not reached via kvm_vcpu_uninit(). |
| |
| Fixes: 96bc451a15329 ("KVM: PPC: Introduce shared page") |
| 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/kvm/book3s_pr.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/arch/powerpc/kvm/book3s_pr.c |
| +++ b/arch/powerpc/kvm/book3s_pr.c |
| @@ -1772,10 +1772,12 @@ static struct kvm_vcpu *kvmppc_core_vcpu |
| |
| err = kvmppc_mmu_init(vcpu); |
| if (err < 0) |
| - goto uninit_vcpu; |
| + goto free_shared_page; |
| |
| return vcpu; |
| |
| +free_shared_page: |
| + free_page((unsigned long)vcpu->arch.shared); |
| uninit_vcpu: |
| kvm_vcpu_uninit(vcpu); |
| free_shadow_vcpu: |