KVM: explain missing kvm_put_kvm in case of failure
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 27 Jun 2017 13:45:09 +0000 (15:45 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 27 Jun 2017 13:45:09 +0000 (15:45 +0200)
The call to kvm_put_kvm was removed from error handling in commit
506cfba9e726 ("KVM: don't use anon_inode_getfd() before possible
failures"), but it is _not_ a memory leak.  Reuse Al's explanation
to avoid that someone else makes the same mistake.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c

index 3863cf7..19f0ecb 100644 (file)
@@ -3191,6 +3191,12 @@ static int kvm_dev_ioctl_create_vm(unsigned long type)
                return PTR_ERR(file);
        }
 
+       /*
+        * Don't call kvm_put_kvm anymore at this point; file->f_op is
+        * already set, with ->release() being kvm_vm_release().  In error
+        * cases it will be called by the final fput(file) and will take
+        * care of doing kvm_put_kvm(kvm).
+        */
        if (kvm_create_vm_debugfs(kvm, r) < 0) {
                put_unused_fd(r);
                fput(file);