virgl: Allocate qdws after virgl_init_context to avoid leak.
authorVinson Lee <vlee@freedesktop.org>
Sat, 30 Oct 2021 22:12:00 +0000 (15:12 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 11 Nov 2021 01:51:35 +0000 (01:51 +0000)
Fix defect reported by Coverity Scan.

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

Fixes: 9a7d6a110e2 ("virgl/drm: explicit context initialization")
Suggested-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13609>

src/gallium/winsys/virgl/drm/virgl_drm_winsys.c

index 6d995f2..6bb14d7 100644 (file)
@@ -1220,16 +1220,16 @@ virgl_drm_winsys_create(int drmFD)
    if (drm_version < 0)
       return NULL;
 
-   qdws = CALLOC_STRUCT(virgl_drm_winsys);
-   if (!qdws)
-      return NULL;
-
    if (params[param_context_init].value) {
       ret = virgl_init_context(drmFD);
       if (ret)
          return NULL;
    }
 
+   qdws = CALLOC_STRUCT(virgl_drm_winsys);
+   if (!qdws)
+      return NULL;
+
    qdws->fd = drmFD;
    virgl_resource_cache_init(&qdws->cache, CACHE_TIMEOUT_USEC,
                              virgl_drm_resource_cache_entry_is_busy,