[PATCH v3 1/5] drm/qxl: unpin the framebuffer when plane preparation fails
From: Dillon Amburgey
Date: Sat Sep 26 2026 - 12:31:52 EST
qxl_plane_prepare_fb() pins the framebuffer before preparing its GEM
fences. If GEM preparation fails, the atomic helper cleans up only the
previously prepared planes, leaving this framebuffer pinned.
Unpin this plane's framebuffer before returning the preparation error.
Fixes: 6071c4c2a319 ("drm/qxl: add drm_gem_plane_helper_prepare_fb")
Assisted-by: LLM sparse
Signed-off-by: Dillon Amburgey <dillona@xxxxxxxxx>
---
drivers/gpu/drm/qxl/qxl_display.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 0719fc6a52d5..1f869734e14d 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -887,7 +887,10 @@ static int qxl_plane_prepare_fb(struct drm_plane *plane,
if (ret)
return ret;
- return drm_gem_plane_helper_prepare_fb(plane, new_state);
+ ret = drm_gem_plane_helper_prepare_fb(plane, new_state);
+ if (ret)
+ qxl_bo_unpin(user_bo);
+ return ret;
}
static void qxl_plane_cleanup_fb(struct drm_plane *plane,