[Mesa-dev] [PATCH] egl/dri2: fix segfault when display initialisation fails
Eric Engestrom
eric.engestrom at imgtec.com
Thu Feb 22 17:25:53 UTC 2018
On Thursday, 2018-02-22 13:37:54 +0000, Frank Binns wrote:
> dri2_display_destroy() is called when platform specific display
> initialisation fails. However, this would typically lead to a
> segfault due to the dri2_egl_display vbtl not having been set up.
>
> Fixes: 2db95482964 ("loader_dri3/glx/egl: Optionally use a blit
> context for blitting operations")
> Signed-off-by: Frank Binns <francisbinns at gmail.com>
Error paths are basically never tested...
You're entirely right, thanks for catching this!
Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
> ---
> src/egl/drivers/dri2/egl_dri2.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index 17b646e..c06a0ca 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -973,7 +973,7 @@ dri2_display_destroy(_EGLDisplay *disp)
> struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
>
> if (dri2_dpy->own_dri_screen) {
> - if (dri2_dpy->vtbl->close_screen_notify)
> + if (dri2_dpy->vtbl && dri2_dpy->vtbl->close_screen_notify)
> dri2_dpy->vtbl->close_screen_notify(disp);
> dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
> }
> --
> 2.7.4
>
More information about the mesa-dev
mailing list