mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-24 18:20:05 +01:00
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>
(cherry picked from commit b27b5cd5f3)
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1766>
This commit is contained in:
parent
cea92a3e09
commit
f7e3397e4d
1 changed files with 5 additions and 0 deletions
|
|
@ -631,6 +631,9 @@ xwl_glamor_gbm_cleanup(struct xwl_screen *xwl_screen)
|
|||
{
|
||||
struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen);
|
||||
|
||||
if (!xwl_gbm)
|
||||
return;
|
||||
|
||||
if (xwl_gbm->device_name)
|
||||
free(xwl_gbm->device_name);
|
||||
drmFreeDevice(&xwl_gbm->device);
|
||||
|
|
@ -643,6 +646,8 @@ xwl_glamor_gbm_cleanup(struct xwl_screen *xwl_screen)
|
|||
if (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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue