From 85c38d192fc701000fa1acbafca5a7f28e5ba54b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 28 Sep 2021 21:50:51 -0400 Subject: [PATCH] wsi/x11: fix uninit value by using zalloc for swapchain ==767499== Conditional jump or move depends on uninitialised value(s) ==767499== at 0xEB8E3ED: x11_image_finish (wsi_common_x11.c:1539) ==767499== by 0xEB8E768: x11_swapchain_destroy (wsi_common_x11.c:1640) ==767499== by 0xEB8A8FA: wsi_common_destroy_swapchain (wsi_common.c:505) ==767499== by 0xDE30BA1: anv_DestroySwapchainKHR (anv_wsi.c:242) ==767499== by 0x6817A21: copper_displaytarget_destroy (zink_copper.c:192) ==767499== by 0x6882BE6: zink_destroy_resource_object (zink_resource.c:95) ==767499== by 0x6882447: zink_resource_object_reference (zink_resource.h:198) ==767499== by 0x6882D33: zink_resource_destroy (zink_resource.c:123) ==767499== by 0x688AC97: pipe_resource_destroy (u_inlines.h:145) ==767499== by 0x688AD2E: pipe_resource_reference (u_inlines.h:162) ==767499== by 0x688BE1E: zink_destroy_surface (zink_surface.c:319) ==767499== by 0x688AE0A: zink_surface_reference (zink_surface.h:102) ==767499== by 0x688BE6D: zink_surface_destroy (zink_surface.c:328) ==767499== by 0x67F9CA2: pipe_surface_release (u_inlines.h:134) ==767499== by 0x67FB8AD: zink_context_destroy (zink_context.c:92) ==767499== by 0x5D47B65: st_destroy_context_priv (st_context.c:475) ==767499== by 0x5D49AF2: st_destroy_context (st_context.c:1193) ==767499== by 0x5D5C90F: st_context_destroy (st_manager.c:816) ==767499== by 0x5CC1FC9: dri_destroy_context (dri_context.c:248) ==767499== by 0x658DD63: driDestroyContext (dri_util.c:535) ==767499== by 0x5A30166: drisw_destroy_context (drisw_glx.c:417) ==767499== by 0x5A32484: glXDestroyContext (glxcmds.c:515) ==767499== by 0x5315AEB: glXDestroyContext (libglx.c:332) ==767499== by 0x4AA8E7D: glXDestroyContext (g_libglglxwrapper.c:384) ==767499== by 0x4D5A3F0: ??? (in /usr/lib64/libwaffle-1.so.0.6.1) ==767499== by 0x499DDD5: piglit_wfl_framework_teardown (piglit_wfl_framework.c:638) ==767499== by 0x499E4C5: piglit_winsys_framework_teardown (piglit_winsys_framework.c:238) ==767499== by 0x499F50C: destroy (piglit_x11_framework.c:212) ==767499== by 0x498C535: destroy (piglit-framework-gl.c:210) ==767499== by 0x4F48AF6: __run_exit_handlers (in /usr/lib64/libc-2.33.so) ==767499== by 0x4F48C9F: exit (in /usr/lib64/libc-2.33.so) ==767499== by 0x4AEFD71: piglit_report_result (piglit-util.c:245) ==767499== by 0x499F2CA: process_next_event (piglit_x11_framework.c:139) ==767499== by 0x499F365: enter_event_loop (piglit_x11_framework.c:153) ==767499== by 0x499DF88: run_test (piglit_winsys_framework.c:88) ==767499== by 0x498C5EF: piglit_gl_test_run (piglit-framework-gl.c:229) ==767499== by 0x4022B4: main (primitive-restart.c:45) ==767499== Uninitialised value was created by a heap allocation ==767499== at 0x484086F: malloc (vg_replace_malloc.c:380) ==767499== by 0xE964E85: vk_default_alloc (vk_alloc.c:26) ==767499== by 0xEB8B24B: vk_alloc (vk_alloc.h:43) ==767499== by 0xEB8EAF9: x11_surface_create_swapchain (wsi_common_x11.c:1723) ==767499== by 0xEB8A82A: wsi_common_create_swapchain (wsi_common.c:476) ==767499== by 0xDE30B47: anv_CreateSwapchainKHR (anv_wsi.c:225) ==767499== by 0xE96134F: vk_tramp_CreateSwapchainKHR (vk_dispatch_table.c:6592) ==767499== by 0xD7B88F0: ??? (in /usr/lib64/libvulkan.so.1.2.162) ==767499== by 0x6817796: copper_CreateSwapchain (zink_copper.c:123) ==767499== by 0x6817960: copper_displaytarget_create (zink_copper.c:170) ==767499== by 0x6884C65: resource_create (zink_resource.c:780) ==767499== by 0x6884EC5: zink_resource_create_drawable (zink_resource.c:829) ==767499== by 0x5CC0FE3: copper_allocate_textures (copper.c:199) ==767499== by 0x5CC28C2: dri_st_framebuffer_validate (dri_drawable.c:82) ==767499== by 0x5D5B69A: st_framebuffer_validate (st_manager.c:222) ==767499== by 0x5D5D32D: st_api_make_current (st_manager.c:1102) ==767499== by 0x5CC220B: dri_make_current (dri_context.c:306) ==767499== by 0x658DE23: driBindContext (dri_util.c:588) ==767499== by 0x5A3022A: drisw_bind_context (drisw_glx.c:435) ==767499== by 0x5A36CC2: MakeContextCurrent (glxcurrent.c:220) ==767499== by 0x5A36DF9: glXMakeCurrent (glxcurrent.c:253) ==767499== by 0x531849C: InternalMakeCurrentVendor (libglx.c:875) ==767499== by 0x53185C3: InternalMakeCurrentDispatch (libglx.c:930) ==767499== by 0x5318DE5: CommonMakeCurrent (libglx.c:1074) ==767499== by 0x5318ED5: glXMakeCurrent (libglx.c:1119) ==767499== by 0x4AA9CFA: glXMakeCurrent (g_libglglxwrapper.c:930) ==767499== by 0x4D5AA36: ??? (in /usr/lib64/libwaffle-1.so.0.6.1) ==767499== by 0x4D5E16E: waffle_make_current (in /usr/lib64/libwaffle-1.so.0.6.1) ==767499== by 0x499C8CD: wfl_checked_make_current (piglit-util-waffle.h:115) ==767499== by 0x499DA04: make_context_current_singlepass (piglit_wfl_framework.c:488) ==767499== by 0x499DC43: make_context_current (piglit_wfl_framework.c:565) ==767499== by 0x499DD88: piglit_wfl_framework_init (piglit_wfl_framework.c:628) ==767499== by 0x499E3FC: piglit_winsys_framework_init (piglit_winsys_framework.c:209) ==767499== by 0x499F581: piglit_x11_framework_create (piglit_x11_framework.c:229) ==767499== by 0x499E361: piglit_winsys_framework_factory (piglit_winsys_framework.c:175) ==767499== by 0x498CA60: piglit_gl_framework_factory (piglit_gl_framework.c:53) ==767499== by 0x498C587: piglit_gl_test_run (piglit-framework-gl.c:221) ==767499== by 0x4022B4: main (primitive-restart.c:45) Fixes: b5c390c113d ("vulkan/wsi: add support for detecting mit-shm pixmaps.") Reviewed-by: Adam Jackson Reviewed-by: Jason Ekstrand Part-of: --- src/vulkan/wsi/wsi_common_x11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index d8d5aaa6d0d..e05ed58acc2 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -1720,7 +1720,7 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface, free(geometry); size_t size = sizeof(*chain) + num_images * sizeof(chain->images[0]); - chain = vk_alloc(pAllocator, size, 8, + chain = vk_zalloc(pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (chain == NULL) return VK_ERROR_OUT_OF_HOST_MEMORY;