From 7c57346dfdb3c34229f20ef1c2753d1ac6b4dae0 Mon Sep 17 00:00:00 2001 From: Leandro Ribeiro Date: Tue, 30 Nov 2021 13:40:26 -0300 Subject: [PATCH] egl/wayland: fix surface dma-buf feedback error exits This fixes a leak that was introduced in 89d15b9a "egl/wayland: add initial dma-buf feedback support". Do not leak dri2_surf->wl_dmabuf_feedback when we have to bail out because of allocation issues. Signed-off-by: Leandro Ribeiro Part-of: --- src/egl/drivers/dri2/platform_wayland.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index f714e211f55..7429b05b4b3 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -722,10 +722,15 @@ dri2_wl_create_window_surface(_EGLDisplay *disp, _EGLConfig *conf, &surface_dmabuf_feedback_listener, dri2_surf); - if (dmabuf_feedback_init(&dri2_surf->pending_dmabuf_feedback) < 0) + if (dmabuf_feedback_init(&dri2_surf->pending_dmabuf_feedback) < 0) { + zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback); goto cleanup_surf_wrapper; - if (dmabuf_feedback_init(&dri2_surf->dmabuf_feedback) < 0) - goto cleanup_pending_dmabuf_feedback; + } + if (dmabuf_feedback_init(&dri2_surf->dmabuf_feedback) < 0) { + dmabuf_feedback_fini(&dri2_surf->pending_dmabuf_feedback); + zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback); + goto cleanup_surf_wrapper; + } if (roundtrip(dri2_dpy) < 0) goto cleanup_dmabuf_feedback; @@ -748,7 +753,6 @@ dri2_wl_create_window_surface(_EGLDisplay *disp, _EGLConfig *conf, if (dri2_surf->wl_dmabuf_feedback) { zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback); dmabuf_feedback_fini(&dri2_surf->dmabuf_feedback); - cleanup_pending_dmabuf_feedback: dmabuf_feedback_fini(&dri2_surf->pending_dmabuf_feedback); } cleanup_surf_wrapper: