[PATCH 6/9] drm/i915/gvt: Add missing module_put() in error unwind

Jason Gunthorpe
2022-04-12T15:54:18Z

try_module_get() must be undone if kvmgt_guest_init() fails or we leak the
module reference count on the failure path since the close_device op is
never called in this case.

Fixes: 9bdb073464d6 ("drm/i915/gvt: Change KVMGT as self load module")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
drivers/gpu/drm/i915/gvt/kvmgt.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c
index 3302d5d4d92146..d7c22a2601f3ad 100644
--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
+++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
@@ -952,13 +952,16 @@ static int intel_vgpu_open_device(struct mdev_device *mdev)

ret = kvmgt_guest_init(mdev);
if (ret)
- goto undo_group;
+ goto undo_module_get;

intel_gvt_ops->vgpu_activate(vgpu);

atomic_set(&vdev->released, 0);
return ret;

+undo_module_get:
+ module_put(THIS_MODULE);
+
undo_group:
vfio_group_put_external_user(vdev->vfio_group);
vdev->vfio_group = NULL;
--
2.35.1