From 8f7b85e8cded528ec4074bfdcb1818c05fb80fe3 Mon Sep 17 00:00:00 2001 From: "Eric R. Smith" Date: Wed, 11 Dec 2024 11:34:51 -0400 Subject: [PATCH] panfrost: fix potential memory leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the very unlikely case that the packed AFBC image will not save (enough) memory, we abort packing. In this case we should free the BO associated with the metadata. Fixes: 5a928f7563a ("panfrost: Add env variable for max AFBC packing ratio") Reviewed-by: Louis-Francis Ratté-Boulianne Reviewed-by: Erik Faye-Lund (cherry picked from commit f8bc6c866373934fea3093124b708d857adecbf2) Part-of: --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_resource.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 82612580b52..78bb2d94324 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -34,7 +34,7 @@ "description": "panfrost: fix potential memory leak", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5a928f7563af8ed18617210b95208ea63c157e2f", "notes": null diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 2029a1cccc1..95f836b2cba 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -1672,9 +1672,10 @@ panfrost_pack_afbc(struct panfrost_context *ctx, unsigned old_size = panfrost_bo_size(prsrc->bo); unsigned ratio = 100 * new_size / old_size; - if (ratio > screen->max_afbc_packing_ratio) + if (ratio > screen->max_afbc_packing_ratio) { + panfrost_bo_unreference(metadata_bo); return; - + } perf_debug(ctx, "%i%%: %i KB -> %i KB\n", ratio, old_size / 1024, new_size / 1024);