Mesa (staging/20.1): etnaviv: Fix memory leak on error path.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 1 16:45:52 UTC 2020


Module: Mesa
Branch: staging/20.1
Commit: 0ce16144db63e7ff3e6416451bb624646ee08be3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ce16144db63e7ff3e6416451bb624646ee08be3

Author: Vinson Lee <vlee at freedesktop.org>
Date:   Tue May 26 15:54:06 2020 -0700

etnaviv: Fix memory leak on error path.

Fix warning reported by Coverity Scan.

Resource leak (RESOURCE_LEAK)
leaked_storage: Variable pq going out of scope leaks the storage it
points to.

Suggested-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Fixes: eed5a009897a ("etnaviv: convert perfmon queries to acc queries")
Signed-off-by: Vinson Lee <vlee at freedesktop.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5220>
(cherry picked from commit f047d585ee472a314d4ad5da4dffa5e7c2a42eb5)

---

 .pick_status.json                                       | 2 +-
 src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c | 9 +++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index b7a3b94e115..a01d9561317 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -130,7 +130,7 @@
         "description": "etnaviv: Fix memory leak on error path.",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "eed5a009897a859ec118ef84c0437be174a49da3"
     },
diff --git a/src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c b/src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c
index 5a5ffdb5d61..7c49fc88fad 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c
@@ -101,12 +101,9 @@ perfmon_supports(unsigned query_type)
 static struct etna_acc_query *
 perfmon_allocate(struct etna_context *ctx, unsigned query_type)
 {
-   struct etna_pm_query *pq = CALLOC_STRUCT(etna_pm_query);
+   struct etna_pm_query *pq;
    const struct etna_perfmon_config *cfg;
 
-   if (!pq)
-      return NULL;
-
    cfg = etna_pm_query_config(query_type);
    if (!cfg)
       return false;
@@ -114,6 +111,10 @@ perfmon_allocate(struct etna_context *ctx, unsigned query_type)
    if (!etna_pm_cfg_supported(ctx->screen->perfmon, cfg))
       return false;
 
+   pq = CALLOC_STRUCT(etna_pm_query);
+   if (!pq)
+      return NULL;
+
    pm_add_signal(pq, ctx->screen->perfmon, cfg);
 
    return &pq->base;



More information about the mesa-commit mailing list