Module: Mesa Branch: staging/21.3 Commit: fd5fe8fcc9f7a66efabe87f1c34bb756aac22195 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd5fe8fcc9f7a66efabe87f1c34bb756aac22195
Author: Vinson Lee <[email protected]> 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 <[email protected]> Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Gert Wollny <[email protected]> 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,
