If mipi_dsi_attach() fails after panel_simple_probe() succeeds, only the
panel registration is undone, leaving runtime PM enabled and an optional
DDC adapter reference unreleased.
Call panel_simple_remove() to unwind the common probe resources as well.
This issue was identified during our ongoing static-analysis research while
reviewing kernel code.
Fixes: 210fcd9d9cf1 ("drm/panel: Add support for Panasonic VVX10F004B0")
Cc: [email protected]
Co-developed-by: Ijae Kim <[email protected]>
Signed-off-by: Ijae Kim <[email protected]>
Signed-off-by: Myeonghun Pak <[email protected]>
---
drivers/gpu/drm/panel/panel-simple.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-simple.c
b/drivers/gpu/drm/panel/panel-simple.c
index c95964ba25a9..767068de6816 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -6552,11 +6552,8 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device
*dsi)
dsi->lanes = desc->lanes;
err = mipi_dsi_attach(dsi);
- if (err) {
- struct panel_simple *panel = mipi_dsi_get_drvdata(dsi);
-
- drm_panel_remove(&panel->base);
- }
+ if (err)
+ panel_simple_remove(&dsi->dev);
return err;
}
--
2.50.1