aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornixiaoming <nixiaoming@huawei.com>2017-08-31 06:51:09 -0400
committerPaul Mackerras <paulus@ozlabs.org>2017-08-31 20:17:58 -0400
commit43f6b0cfb2e4dfd5aa452a1d44491e805e37b7da (patch)
treecea9bf0ef257d98d80b3a24c755f30b2080ddb9f
parent4dafecde443a3f5690d68a3a0d32202b634b2675 (diff)
KVM: PPC: Book3S HV: Fix memory leak in kvm_vm_ioctl_get_htab_fd
We do ctx = kzalloc(sizeof(*ctx), GFP_KERNEL) and then later on call anon_inode_getfd(), but if that fails we don't free ctx, so that memory gets leaked. To fix it, this adds kfree(ctx) in the failure path. Signed-off-by: nixiaoming <nixiaoming@huawei.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_hv.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index 67075e065ef2..7c62967d672c 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -1941,6 +1941,7 @@ int kvm_vm_ioctl_get_htab_fd(struct kvm *kvm, struct kvm_get_htab_fd *ghf)
1941 rwflag = (ghf->flags & KVM_GET_HTAB_WRITE) ? O_WRONLY : O_RDONLY; 1941 rwflag = (ghf->flags & KVM_GET_HTAB_WRITE) ? O_WRONLY : O_RDONLY;
1942 ret = anon_inode_getfd("kvm-htab", &kvm_htab_fops, ctx, rwflag | O_CLOEXEC); 1942 ret = anon_inode_getfd("kvm-htab", &kvm_htab_fops, ctx, rwflag | O_CLOEXEC);
1943 if (ret < 0) { 1943 if (ret < 0) {
1944 kfree(ctx);
1944 kvm_put_kvm(kvm); 1945 kvm_put_kvm(kvm);
1945 return ret; 1946 return ret;
1946 } 1947 }