drm/i915/gvt: Get reference to KVM iff attachment to VM is successful
Get a reference to KVM if and only if a vGPU is successfully attached to
the VM to avoid leaking a reference if there's no available vGPU. On
open_device() failure, vfio_device_open() doesn't invoke close_device().
Fixes: 421cfe6596
("vfio: remove VFIO_GROUP_NOTIFY_SET_KVM")
Cc: stable@vger.kernel.org
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20221111002225.2418386-2-seanjc@google.com
This commit is contained in:
parent
f0c4d9fc9c
commit
9ed1fdee9e
1 changed files with 1 additions and 2 deletions
|
@ -664,8 +664,6 @@ static int intel_vgpu_open_device(struct vfio_device *vfio_dev)
|
||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvm_get_kvm(vgpu->vfio_device.kvm);
|
|
||||||
|
|
||||||
if (__kvmgt_vgpu_exist(vgpu))
|
if (__kvmgt_vgpu_exist(vgpu))
|
||||||
return -EEXIST;
|
return -EEXIST;
|
||||||
|
|
||||||
|
@ -676,6 +674,7 @@ static int intel_vgpu_open_device(struct vfio_device *vfio_dev)
|
||||||
|
|
||||||
vgpu->track_node.track_write = kvmgt_page_track_write;
|
vgpu->track_node.track_write = kvmgt_page_track_write;
|
||||||
vgpu->track_node.track_flush_slot = kvmgt_page_track_flush_slot;
|
vgpu->track_node.track_flush_slot = kvmgt_page_track_flush_slot;
|
||||||
|
kvm_get_kvm(vgpu->vfio_device.kvm);
|
||||||
kvm_page_track_register_notifier(vgpu->vfio_device.kvm,
|
kvm_page_track_register_notifier(vgpu->vfio_device.kvm,
|
||||||
&vgpu->track_node);
|
&vgpu->track_node);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue