xwayland/glamor: Clean-up GBM's screen private on failure
If we bail out initializing GBM glamor backend, the screen private for the GBM backend may remain, pointing at freed memory. To avoid that issue, make sure to clear up the screen's private for the GBM backend. Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1785 Signed-off-by: Michel Dänzer <michel@daenzer.net> Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1768>
This commit is contained in:
parent
45c1d22ff6
commit
b27b5cd5f3
|
@ -631,6 +631,9 @@ xwl_glamor_gbm_cleanup(struct xwl_screen *xwl_screen)
|
||||||
{
|
{
|
||||||
struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen);
|
struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen);
|
||||||
|
|
||||||
|
if (!xwl_gbm)
|
||||||
|
return;
|
||||||
|
|
||||||
if (xwl_gbm->device_name)
|
if (xwl_gbm->device_name)
|
||||||
free(xwl_gbm->device_name);
|
free(xwl_gbm->device_name);
|
||||||
drmFreeDevice(&xwl_gbm->device);
|
drmFreeDevice(&xwl_gbm->device);
|
||||||
|
@ -643,6 +646,8 @@ xwl_glamor_gbm_cleanup(struct xwl_screen *xwl_screen)
|
||||||
if (xwl_screen->explicit_sync)
|
if (xwl_screen->explicit_sync)
|
||||||
wp_linux_drm_syncobj_manager_v1_destroy(xwl_screen->explicit_sync);
|
wp_linux_drm_syncobj_manager_v1_destroy(xwl_screen->explicit_sync);
|
||||||
|
|
||||||
|
dixSetPrivate(&xwl_screen->screen->devPrivates, &xwl_gbm_private_key,
|
||||||
|
NULL);
|
||||||
free(xwl_gbm);
|
free(xwl_gbm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue