[PATCH] drm/i915: Fix vm reference leak in mock_gem_device()
From: Wentao Liang
Date: Wed Sep 16 2026 - 15:33:10 EST
mock_gem_device() takes a reference on the GGTT vm for gt->vm, but
neither mock_device_release() nor the setup error paths drop it, unlike
the real teardown where intel_gt_driver_release() releases gt->vm.
Drop the reference before mock_fini_ggtt() and on the error paths.
Fixes: cdeea858d8df ("drm/i915: Remove unused i915->ggtt")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
drivers/gpu/drm/i915/selftests/mock_gem_device.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 27dc0e40a8d7..12cd252d9250 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -71,6 +71,7 @@ static void mock_device_release(struct drm_device *dev)
i915_gem_drain_workqueue(i915);
+ i915_vm_put(fetch_and_zero(&to_gt(i915)->vm));
mock_fini_ggtt(to_gt(i915)->ggtt);
destroy_workqueue(i915->unordered_wq);
destroy_workqueue(i915->wq);
@@ -145,6 +146,7 @@ struct drm_i915_private *mock_gem_device(void)
#endif
struct drm_i915_private *i915;
struct intel_display *display;
+ struct i915_address_space *vm;
struct pci_dev *pdev;
int ret;
@@ -263,6 +265,9 @@ struct drm_i915_private *mock_gem_device(void)
err_drv:
intel_region_ttm_device_fini(i915);
err_ttm:
+ vm = fetch_and_zero(&to_gt(i915)->vm);
+ if (vm)
+ i915_vm_put(vm);
intel_gt_driver_late_release_all(i915);
intel_memory_regions_driver_release(i915);
drm_mode_config_cleanup(&i915->drm);
--
2.34.1