fbdev: omapfb: panel-dsi-cm: initialize lock before registering display
authorRunyu Xiao <runyu.xiao@seu.edu.cn>
Tue, 18 Aug 2026 13:53:18 +0000 (21:53 +0800)
committerHelge Deller <deller@gmx.de>
Thu, 20 Aug 2026 21:45:07 +0000 (23:45 +0200)
dsicm_probe() registers the display before initializing ddata->lock.
Once omapdss_register_display() publishes the display, another consumer
can reach a dsicm callback that takes this mutex while it is still
uninitialized.

Initialize the mutex before registering the display so the published
callbacks always see a valid lock.

Fixes: f76ee892a99e ("omapfb: copy omapdss & displays for omapfb")
Cc: stable@vger.kernel.org
Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c

index 7c3463e..b232867 100644 (file)
@@ -1150,14 +1150,14 @@ static int dsicm_probe(struct platform_device *pdev)
        dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE |
                OMAP_DSS_DISPLAY_CAP_TEAR_ELIM;
 
+       mutex_init(&ddata->lock);
+
        r = omapdss_register_display(dssdev);
        if (r) {
                dev_err(dev, "Failed to register panel\n");
                goto err_reg;
        }
 
-       mutex_init(&ddata->lock);
-
        atomic_set(&ddata->do_update, 0);
 
        ddata->reset_gpio = devm_gpiod_get(&pdev->dev, "reset", GPIOD_OUT_LOW);