From: Alyssa Rosenzweig Date: Mon, 15 Jul 2019 19:05:48 +0000 (-0700) Subject: panfrost: Don't leak oversized transient allocations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c1125d09355da276646988061e4b2b5331e94413;p=mesa.git panfrost: Don't leak oversized transient allocations When we allocate them, we allocate with two references accidentally, causing them to leak uncontrollably. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/pan_allocate.c b/src/gallium/drivers/panfrost/pan_allocate.c index 9d78fab85d6..9e9565d6006 100644 --- a/src/gallium/drivers/panfrost/pan_allocate.c +++ b/src/gallium/drivers/panfrost/pan_allocate.c @@ -118,6 +118,10 @@ panfrost_allocate_transient(struct panfrost_context *ctx, size_t sz) /* Create a new BO and reference it */ bo = panfrost_drm_create_bo(screen, ALIGN_POT(sz, 4096), 0); panfrost_job_add_bo(batch, bo); + + /* Creating a BO adds a reference, and then the job adds a + * second one. So we need to pop back one reference */ + panfrost_bo_unreference(&screen->base, bo); } struct panfrost_transfer ret = {