Mesa (staging/21.3): virgl: Allocate qdws after virgl_init_context to avoid leak.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 12 19:30:11 UTC 2021


Module: Mesa
Branch: staging/21.3
Commit: fd5fe8fcc9f7a66efabe87f1c34bb756aac22195
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd5fe8fcc9f7a66efabe87f1c34bb756aac22195

Author: Vinson Lee <vlee at freedesktop.org>
Date:   Sat Oct 30 15:12:00 2021 -0700

virgl: Allocate qdws after virgl_init_context to avoid leak.

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 at collabora.com>
Signed-off-by: Vinson Lee <vlee at freedesktop.org>
Reviewed-by: Gert Wollny <gert.wollny at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13609>
(cherry picked from commit 4a38ed822ab0c3d0f663dd5bec238a0839d03b01)

---

 .pick_status.json                               | 2 +-
 src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index b2f4a13c519..abc979473d7 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -472,7 +472,7 @@
         "description": "virgl: Allocate qdws after virgl_init_context to avoid leak.",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "9a7d6a110e2a407ead13d0eb2f1aedbdb54e696b"
     },
diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
index 6d995f2a7b4..6bb14d7271d 100644
--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
@@ -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,



More information about the mesa-commit mailing list