KVM: Add separate helper for putting borrowed reference to kvm
authorSean Christopherson <sean.j.christopherson@intel.com>
Mon, 21 Oct 2019 22:58:42 +0000 (15:58 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 22 Oct 2019 13:48:30 +0000 (15:48 +0200)
commit149487bdacde32f5a9a344a49533ae0772fb9db7
tree949c708fd963e3edb6191a6a5b6aa275392c3b0f
parentc90992bfb0804907402ab175b25b8a37cc3c31f2
KVM: Add separate helper for putting borrowed reference to kvm

Add a new helper, kvm_put_kvm_no_destroy(), to handle putting a borrowed
reference[*] to the VM when installing a new file descriptor fails.  KVM
expects the refcount to remain valid in this case, as the in-progress
ioctl() has an explicit reference to the VM.  The primary motiviation
for the helper is to document that the 'kvm' pointer is still valid
after putting the borrowed reference, e.g. to document that doing
mutex(&kvm->lock) immediately after putting a ref to kvm isn't broken.

[*] When exposing a new object to userspace via a file descriptor, e.g.
    a new vcpu, KVM grabs a reference to itself (the VM) prior to making
    the object visible to userspace to avoid prematurely freeing the VM
    in the scenario where userspace immediately closes file descriptor.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/powerpc/kvm/book3s_64_mmu_hv.c
arch/powerpc/kvm/book3s_64_vio.c
include/linux/kvm_host.h
virt/kvm/kvm_main.c