vulkan/wsi: fix double free on error condition
On error during wsi_wl_surface_create_swapchain(), wsi_wl_swapchain_chain_free() is called, followed by vk_free() of the recently freed chain. Move the vk_free() to wsi_wl_swapchain_destroy() to avoid the double free. Fixes dEQP-VK.wsi.wayland.swapchain.simulate_oom.* Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23383>
This commit is contained in:
@@ -2168,8 +2168,6 @@ wsi_wl_swapchain_chain_free(struct wsi_wl_swapchain *chain,
|
||||
}
|
||||
|
||||
wsi_swapchain_finish(&chain->base);
|
||||
|
||||
vk_free(pAllocator, chain);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
@@ -2181,6 +2179,8 @@ wsi_wl_swapchain_destroy(struct wsi_swapchain *wsi_chain,
|
||||
wsi_wl_swapchain_images_free(chain);
|
||||
wsi_wl_swapchain_chain_free(chain, pAllocator);
|
||||
|
||||
vk_free(pAllocator, chain);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user