[Mesa-dev] [PATCH] radv/winsys: Fix mem leak at failed do_winsys_init() call site

Edward O'Callaghan funfunctor at folklore1984.net
Tue Oct 11 11:43:07 UTC 2016


Probably unlikely however ensure we don't leak a heap allocation
on the fail path.

V.2:
 also fix missing 'amdgpu_device_deinitialize()' calls (Emil Velikov).

Signed-off-by: Edward O'Callaghan <funfunctor at folklore1984.net>
---
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index 0ce44ac..0456100 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -337,13 +337,13 @@ radv_amdgpu_winsys_create(int fd)
 
 	ws = calloc(1, sizeof(struct radv_amdgpu_winsys));
 	if (!ws)
-		return NULL;
+		goto fail;
 
 	ws->dev = dev;
 	ws->info.drm_major = drm_major;
 	ws->info.drm_minor = drm_minor;
 	if (!do_winsys_init(ws, fd))
-		goto fail;
+		goto winsys_fail;
 
 	ws->debug_all_bos = getenv("RADV_DEBUG_ALL_BOS") ? true : false;
 	LIST_INITHEAD(&ws->global_bo_list);
@@ -355,6 +355,10 @@ radv_amdgpu_winsys_create(int fd)
 	radv_amdgpu_surface_init_functions(ws);
 
 	return &ws->base;
+
+winsys_fail:
+	free(ws);
 fail:
+	amdgpu_device_deinitialize(dev);
 	return NULL;
 }
-- 
2.7.4



More information about the mesa-dev mailing list