From 2d0ea900bad5ed65bbfb6160744104a35d66c467 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Fri, 10 Apr 2026 00:03:55 -0500
Subject: [PATCH] kmsdrm: Fix double-free of GBM surface buffer in atomic mode
(cherry picked from commit c2d0b59f29e7c4ad7729d9268b5b5ccd437fbc0f)
---
src/video/kmsdrm/SDL_kmsdrmvideo.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c
index f1366e02f1983..5e4b4c53cda7f 100644
--- a/src/video/kmsdrm/SDL_kmsdrmvideo.c
+++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c
@@ -1712,7 +1712,9 @@ static void KMSDRM_DestroySurfaces(SDL_VideoDevice *_this, SDL_Window *window)
/***************************/
if (windata->bo) {
- KMSDRM_gbm_surface_release_buffer(windata->gs, windata->bo);
+ if (windata->bo != windata->next_bo) {
+ KMSDRM_gbm_surface_release_buffer(windata->gs, windata->bo);
+ }
windata->bo = NULL;
}