From: Emil Velikov Date: Thu, 5 Mar 2020 13:05:36 +0000 (+0000) Subject: Revert "egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure" X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d3c91439713ecf025c7fe97aae3a4829b3f1250b;p=mesa.git Revert "egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure" This reverts commit 1b87f4058de84d7a0bb4ead0c4f4b024d4cce8fb. dlclose() of the handle is perfectly reasonable, a follow-up NULL assignment is missing. As-is this causes a leak for nearly every platform, since they call dri2_load_driver* initially, followed by a second swrast fallback call. Some platforms even loop through the existing drivers probing. Revert the commit and add the NULL check. Fixes: 1b87f4058de ("egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure") Signed-off-by: Emil Velikov Reviewed-by: Adam Jackson Reviewed-by: Eric Engestrom Part-of: --- diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 0e065acd763..cdaf3a75029 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -822,9 +822,11 @@ dri2_load_driver_common(_EGLDisplay *disp, if (!extensions) return EGL_FALSE; - if (!dri2_bind_extensions(dri2_dpy, driver_extensions, extensions, false)) + if (!dri2_bind_extensions(dri2_dpy, driver_extensions, extensions, false)) { + dlclose(dri2_dpy->driver); + dri2_dpy->driver = NULL; return EGL_FALSE; - + } dri2_dpy->driver_extensions = extensions; dri2_bind_extensions(dri2_dpy, optional_driver_extensions, extensions, true);