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:
Iván Briano 2023-06-01 14:18:21 -07:00
parent d22a86c77c
commit 39e057028c

View file

@ -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;
}