From b69dc0fb3e319ff815bc8a136846213a8202c294 Mon Sep 17 00:00:00 2001
From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Date: Wed, 3 Apr 2024 19:48:54 +0300
Subject: [PATCH] fixup: drm/panfrost: Explicitly get and put drm-shmem pages

---
 drivers/gpu/drm/panfrost/panfrost_gem.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
index 3c353c26f304e..78932e2baedab 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
@@ -75,17 +75,19 @@ static void panfrost_gem_mapping_release(struct kref *kref)
 				sg_free_table(&bo->sgts[i]);
 			}
 		}
+
+		drm_gem_shmem_put_pages(&bo->base);
 		kvfree(bo->sgts);
+		bo->sgts = NULL;
 	}
 
 	/* Pages ref is owned by the panfrost_gem_mapping object. We must
 	 * release our pages ref (if any), before releasing the object
 	 * ref.
 	 * Non-heap BOs acquired the pages at panfrost_gem_mapping creation
-	 * time, and heap BOs may have acquired pages if the fault handler
-	 * was called, in which case bo->sgts should be non-NULL.
+	 * time.
 	 */
-	if (!bo->base.base.import_attach && (!bo->is_heap || bo->sgts)) {
+	if (!bo->base.base.import_attach && !bo->is_heap && bo->sgts) {
 		drm_gem_shmem_put_pages(&bo->base);
 		bo->sgts = NULL;
 	}
-- 
GitLab