Attaching the panel can fail, so cleanup work is necessary, otherwise a pointer to freed struct drm_panel* will remain in drm_panel code.
Do the cleanup if panel attaching failed.
Fixes: 69dc678abc2b ("drm/panel: Add Feiyang FY07024DI26A30-D MIPI-DSI LCD panel") Signed-off-by: Icenowy Zheng icenowy@aosc.io --- drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c b/drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c index 581661b506f8..f9c1f7bc8218 100644 --- a/drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c +++ b/drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c @@ -227,7 +227,13 @@ static int feiyang_dsi_probe(struct mipi_dsi_device *dsi) dsi->format = MIPI_DSI_FMT_RGB888; dsi->lanes = 4;
- return mipi_dsi_attach(dsi); + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + drm_panel_remove(&ctx->panel); + return ret; + } + + return 0; }
static int feiyang_dsi_remove(struct mipi_dsi_device *dsi)
On Sat, Nov 28, 2020 at 6:23 PM Icenowy Zheng icenowy@aosc.io wrote:
Attaching the panel can fail, so cleanup work is necessary, otherwise a pointer to freed struct drm_panel* will remain in drm_panel code.
Do the cleanup if panel attaching failed.
Fixes: 69dc678abc2b ("drm/panel: Add Feiyang FY07024DI26A30-D MIPI-DSI LCD panel")
The fact that this has failed to probe due to recent changes in sun6i_mipi_dsi.c I don't know how to put that into the commit message.
Signed-off-by: Icenowy Zheng icenowy@aosc.io
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
于 2021年1月6日 GMT+08:00 下午5:47:20, Jagan Teki jagan@amarulasolutions.com 写到:
On Sat, Nov 28, 2020 at 6:23 PM Icenowy Zheng icenowy@aosc.io wrote:
Attaching the panel can fail, so cleanup work is necessary, otherwise a pointer to freed struct drm_panel* will remain in drm_panel code.
Do the cleanup if panel attaching failed.
Fixes: 69dc678abc2b ("drm/panel: Add Feiyang FY07024DI26A30-D
MIPI-DSI LCD panel")
The fact that this has failed to probe due to recent changes in sun6i_mipi_dsi.c I don't know how to put that into the commit message.
It's not related, we shouldn't assume this panel driver will always be used with sunxi SoCs.
It's a panel driver bug that cannot deal with -EPROBE_DEFER well.
Signed-off-by: Icenowy Zheng icenowy@aosc.io
Reviewed-by: Jagan Teki jagan@amarulasolutions.com
On Thu, Jan 7, 2021 at 10:16 AM Icenowy Zheng icenowy@aosc.io wrote:
于 2021年1月6日 GMT+08:00 下午5:47:20, Jagan Teki jagan@amarulasolutions.com 写到:
On Sat, Nov 28, 2020 at 6:23 PM Icenowy Zheng icenowy@aosc.io wrote:
Attaching the panel can fail, so cleanup work is necessary, otherwise a pointer to freed struct drm_panel* will remain in drm_panel code.
Do the cleanup if panel attaching failed.
Fixes: 69dc678abc2b ("drm/panel: Add Feiyang FY07024DI26A30-D
MIPI-DSI LCD panel")
The fact that this has failed to probe due to recent changes in sun6i_mipi_dsi.c I don't know how to put that into the commit message.
It's not related, we shouldn't assume this panel driver will always be used with sunxi SoCs.
Well, I'm aware of it. What I'm trying to say is this panel has referenced with one of exiting panel in a tree and that indeed return mipi_dsi_attach and it verified with DSI host at that time.
It's a panel driver bug that cannot deal with -EPROBE_DEFER well.
Yes, ie reason I have added Reviewed-by tag above.
Jagan.
dri-devel@lists.freedesktop.org