[Mesa-dev] [PATCH] vulkan/wsi/wayland: don't double free on error in get_presentation_support

Philipp Zabel p.zabel at pengutronix.de
Fri Oct 5 12:10:13 UTC 2018


On Fri, 2018-10-05 at 10:13 +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> If we fail the init path then don't call the free path.
> 
> Found by coverity
> ---
>  src/vulkan/wsi/wsi_common_wayland.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c
> index 6b34e21bd98..ce20583315a 100644
> --- a/src/vulkan/wsi/wsi_common_wayland.c
> +++ b/src/vulkan/wsi/wsi_common_wayland.c
> @@ -455,8 +455,8 @@ wsi_wl_get_presentation_support(struct wsi_device *wsi_device,
>        (struct wsi_wayland *)wsi_device->wsi[VK_ICD_WSI_PLATFORM_WAYLAND];
>  
>     struct wsi_wl_display display;
> -   int ret = wsi_wl_display_init(wsi, &display, wl_display, false);

This removes int ret ...

> -   wsi_wl_display_finish(&display);
> +   if (wsi_wl_display_init(wsi, &display, wl_display, false))
> +      wsi_wl_display_finish(&display);
>  
>     return ret == 0;

... which is still used here.
Also it looks like this calls finish in the error case (result != 0).

Maybe

    int ret = wsi_wl_display_init(wsi, &display, wl_display, false);
-   wsi_wl_display_finish(&display);
+   if (ret == VK_SUCCESS)
+      wsi_wl_display_finish(&display);

instead?

regards
Philipp


More information about the mesa-dev mailing list