Re: [PATCH] drm/fb-helper: Fix a locking bug in an error path

From: Thomas Zimmermann

Date: Tue Apr 07 2026 - 03:47:48 EST


(cc: dri-devel)

Am 07.04.26 um 09:44 schrieb Thomas Zimmermann:
Hi

Am 03.04.26 um 22:53 schrieb Bart Van Assche:
The name of the function __drm_fb_helper_initial_config_and_unlock() and
also the comment above that function make it clear that all code paths
in this function should unlock fb_helper->lock before returning. Add a
mutex_unlock() call in the only code path where it is missing. This has
been detected by the Clang thread-safety analyzer.

Cc: Thomas Zimmermann <tzimmermann@xxxxxxx>
Cc: Christian König <christian.koenig@xxxxxxx> # radeon
Cc: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx> # msm
Cc: Javier Martinez Canillas <javierm@xxxxxxxxxx>
Fixes: 63c971af4036 ("drm/fb-helper: Allocate and release fb_info in single place")
Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>

Reviewed-by: Thomas Zimmermann <tzimmermann@xxxxxxx>

Thanks a lot.

Best regards
Thomas

---
  drivers/gpu/drm/drm_fb_helper.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 05803169bed5..16bfbfb0af16 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -1641,8 +1641,10 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
      drm_client_modeset_probe(&fb_helper->client, width, height);
        info = drm_fb_helper_alloc_info(fb_helper);
-    if (IS_ERR(info))
+    if (IS_ERR(info)) {
+        mutex_unlock(&fb_helper->lock);
          return PTR_ERR(info);
+    }
        ret = drm_fb_helper_single_fb_probe(fb_helper);
      if (ret < 0) {


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)