summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/drm_pagemap_util.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2026-03-21 01:52:29 +1000
committerDave Airlie <airlied@redhat.com>2026-03-21 01:52:36 +1000
commit437eccb1a89d7038776d3119e54bfda119c6e92a (patch)
treec657bf147f0f9ab36363b72d2116bd583361fe63 /drivers/gpu/drm/drm_pagemap_util.c
parentd551d2e876bf0e5f41d3cf54d4d63180cd8b8ff0 (diff)
parentcffcb42c57686e9a801dfcf37a3d0c62e51c1c3e (diff)
Merge tag 'drm-misc-fixes-2026-03-19' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
A doc warning fix and a memory leak fix for vmwgfx, a deadlock fix and interrupt handling fixes for imagination, a locking fix for pagemap_until, a UAF fix for drm_dev_unplug, and a multi-channel audio handling fix for dw-hdmi-qp. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <mripard@redhat.com> Link: https://patch.msgid.link/20260319-lush-righteous-malamute-e7bb98@houat
Diffstat (limited to 'drivers/gpu/drm/drm_pagemap_util.c')
-rw-r--r--drivers/gpu/drm/drm_pagemap_util.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/gpu/drm/drm_pagemap_util.c b/drivers/gpu/drm/drm_pagemap_util.c
index 14ddb948a32e..6111d90a38e2 100644
--- a/drivers/gpu/drm/drm_pagemap_util.c
+++ b/drivers/gpu/drm/drm_pagemap_util.c
@@ -65,18 +65,14 @@ static void drm_pagemap_cache_fini(void *arg)
drm_dbg(cache->shrinker->drm, "Destroying dpagemap cache.\n");
spin_lock(&cache->lock);
dpagemap = cache->dpagemap;
- if (!dpagemap) {
- spin_unlock(&cache->lock);
- goto out;
- }
+ cache->dpagemap = NULL;
+ if (dpagemap && !drm_pagemap_shrinker_cancel(dpagemap))
+ dpagemap = NULL;
+ spin_unlock(&cache->lock);
- if (drm_pagemap_shrinker_cancel(dpagemap)) {
- cache->dpagemap = NULL;
- spin_unlock(&cache->lock);
+ if (dpagemap)
drm_pagemap_destroy(dpagemap, false);
- }
-out:
mutex_destroy(&cache->lookup_mutex);
kfree(cache);
}