mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-04-11 11:20:45 +02:00
kmsdrm: Fix order of GBM and EGL teardown
All locked front buffers must be released prior to destroying the EGL surface to avoid causing a UAF in libnvidia-egl-gbm.so.
This commit is contained in:
committed by
Sam Lantinga
parent
0fc9db9b82
commit
463b6be133
@@ -1692,17 +1692,6 @@ static void KMSDRM_DestroySurfaces(SDL_VideoDevice *_this, SDL_Window *window)
|
||||
SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "Could not restore CRTC");
|
||||
}
|
||||
|
||||
/***************************/
|
||||
// Destroy the EGL surface
|
||||
/***************************/
|
||||
|
||||
SDL_EGL_MakeCurrent(_this, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
|
||||
if (windata->egl_surface != EGL_NO_SURFACE) {
|
||||
SDL_EGL_DestroySurface(_this, windata->egl_surface);
|
||||
windata->egl_surface = EGL_NO_SURFACE;
|
||||
}
|
||||
|
||||
/***************************/
|
||||
// Destroy the GBM buffers
|
||||
/***************************/
|
||||
@@ -1719,6 +1708,17 @@ static void KMSDRM_DestroySurfaces(SDL_VideoDevice *_this, SDL_Window *window)
|
||||
windata->next_bo = NULL;
|
||||
}
|
||||
|
||||
/***************************/
|
||||
// Destroy the EGL surface
|
||||
/***************************/
|
||||
|
||||
SDL_EGL_MakeCurrent(_this, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
|
||||
if (windata->egl_surface != EGL_NO_SURFACE) {
|
||||
SDL_EGL_DestroySurface(_this, windata->egl_surface);
|
||||
windata->egl_surface = EGL_NO_SURFACE;
|
||||
}
|
||||
|
||||
/***************************/
|
||||
// Destroy the GBM surface
|
||||
/***************************/
|
||||
|
||||
Reference in New Issue
Block a user