| From 585bb8f9a5e592f2ce7abbe5ed3112d5438d2754 Mon Sep 17 00:00:00 2001 |
| From: James Hogan <james.hogan@imgtec.com> |
| Date: Wed, 11 Nov 2015 14:21:20 +0000 |
| Subject: MIPS: KVM: Uninit VCPU in vcpu_create error path |
| |
| From: James Hogan <james.hogan@imgtec.com> |
| |
| commit 585bb8f9a5e592f2ce7abbe5ed3112d5438d2754 upstream. |
| |
| If either of the memory allocations in kvm_arch_vcpu_create() fail, the |
| vcpu which has been allocated and kvm_vcpu_init'd doesn't get uninit'd |
| in the error handling path. Add a call to kvm_vcpu_uninit() to fix this. |
| |
| Fixes: 669e846e6c4e ("KVM/MIPS32: MIPS arch specific APIs for KVM") |
| Signed-off-by: James Hogan <james.hogan@imgtec.com> |
| Cc: Ralf Baechle <ralf@linux-mips.org> |
| Cc: Paolo Bonzini <pbonzini@redhat.com> |
| Cc: Gleb Natapov <gleb@kernel.org> |
| Cc: linux-mips@linux-mips.org |
| Cc: kvm@vger.kernel.org |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/kvm/mips.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/arch/mips/kvm/mips.c |
| +++ b/arch/mips/kvm/mips.c |
| @@ -279,7 +279,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st |
| |
| if (!gebase) { |
| err = -ENOMEM; |
| - goto out_free_cpu; |
| + goto out_uninit_cpu; |
| } |
| kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n", |
| ALIGN(size, PAGE_SIZE), gebase); |
| @@ -343,6 +343,9 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st |
| out_free_gebase: |
| kfree(gebase); |
| |
| +out_uninit_cpu: |
| + kvm_vcpu_uninit(vcpu); |
| + |
| out_free_cpu: |
| kfree(vcpu); |
| |