[PATCH 2/2] gpu: host1x: Fix refcount leak in buffer cache

Mikko Perttunen mperttunen at nvidia.com
Mon Feb 7 13:19:32 UTC 2022


The recently introduced buffer cache is causing cached BOs to leak, as
cache entries are dropped when a BO's refcount goes to zero but the
cache itself keeps a reference to each cache BO, causing a circular
reference.

Fix this by not taking a reference to the cached BOs within the cache
itself.

Fixes: 1f39b1dfa53c ("drm/tegra: Implement buffer object cache")
Signed-off-by: Mikko Perttunen <mperttunen at nvidia.com>
---
NOTE

As is, applying this patch reveals a BO refcounting issue in the
DC driver. A fix for that bug should be applied before applying
this patch. I believe Thierry will be posting a fix for that
shortly.
---
 drivers/gpu/host1x/bus.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
index bdee16a0bb8e..66ba04501c94 100644
--- a/drivers/gpu/host1x/bus.c
+++ b/drivers/gpu/host1x/bus.c
@@ -938,9 +938,6 @@ struct host1x_bo_mapping *host1x_bo_pin(struct device *dev, struct host1x_bo *bo
 		mapping->cache = cache;
 
 		list_add_tail(&mapping->entry, &cache->mappings);
-
-		/* bump reference count to track the copy in the cache */
-		kref_get(&mapping->ref);
 	}
 
 unlock:
-- 
2.35.0



More information about the dri-devel mailing list