mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-22 13:25:40 -05:00
vfio: Test kvm pointer in _vfio_device_get_kvm_safe()
This saves some lines when adding the kvm get logic for the vfio_device cdev path. This also renames _vfio_device_get_kvm_safe() to be vfio_device_get_kvm_safe(). Suggested-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Tested-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Tested-by: Yanting Jiang <yanting.jiang@intel.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> Link: https://lore.kernel.org/r/20230718135551.6592-20-yi.l.liu@intel.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
@@ -160,12 +160,7 @@ static int vfio_group_ioctl_set_container(struct vfio_group *group,
|
||||
static void vfio_device_group_get_kvm_safe(struct vfio_device *device)
|
||||
{
|
||||
spin_lock(&device->group->kvm_ref_lock);
|
||||
if (!device->group->kvm)
|
||||
goto unlock;
|
||||
|
||||
_vfio_device_get_kvm_safe(device, device->group->kvm);
|
||||
|
||||
unlock:
|
||||
vfio_device_get_kvm_safe(device, device->group->kvm);
|
||||
spin_unlock(&device->group->kvm_ref_lock);
|
||||
}
|
||||
|
||||
|
||||
@@ -340,11 +340,11 @@ enum { vfio_noiommu = false };
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM
|
||||
void _vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm);
|
||||
void vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm);
|
||||
void vfio_device_put_kvm(struct vfio_device *device);
|
||||
#else
|
||||
static inline void _vfio_device_get_kvm_safe(struct vfio_device *device,
|
||||
struct kvm *kvm)
|
||||
static inline void vfio_device_get_kvm_safe(struct vfio_device *device,
|
||||
struct kvm *kvm)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -373,7 +373,7 @@ void vfio_unregister_group_dev(struct vfio_device *device)
|
||||
EXPORT_SYMBOL_GPL(vfio_unregister_group_dev);
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM
|
||||
void _vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm)
|
||||
void vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm)
|
||||
{
|
||||
void (*pfn)(struct kvm *kvm);
|
||||
bool (*fn)(struct kvm *kvm);
|
||||
@@ -381,6 +381,9 @@ void _vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm)
|
||||
|
||||
lockdep_assert_held(&device->dev_set->lock);
|
||||
|
||||
if (!kvm)
|
||||
return;
|
||||
|
||||
pfn = symbol_get(kvm_put_kvm);
|
||||
if (WARN_ON(!pfn))
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user