etnaviv: Fix memory leak on error path.
authorVinson Lee <vlee@freedesktop.org>
Tue, 26 May 2020 22:54:06 +0000 (15:54 -0700)
committerMarge Bot <eric+marge@anholt.net>
Sat, 30 May 2020 01:04:30 +0000 (01:04 +0000)
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@gmail.com>
Fixes: eed5a009897a ("etnaviv: convert perfmon queries to acc queries")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5220>

src/gallium/drivers/etnaviv/etnaviv_query_acc_perfmon.c

index 5a5ffdb5d61610513e57944b1e1d4202b6729799..7c49fc88fad3af0e8d4be1f7afce0c6fdb011a0d 100644 (file)
@@ -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;