Mesa (staging/21.3): virgl: Allocate qdws after virgl_init_context to avoid leak.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Nov 17 20:07:00 UTC 2021
Module: Mesa
Branch: staging/21.3
Commit: a728b8a7329caf3d97c1fc92c353bc5f722d5836
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a728b8a7329caf3d97c1fc92c353bc5f722d5836
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 b24f3c4baf7..7c329659d96 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1696,7 +1696,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