Message ID | 20201128125257.1626588-1-icenowy@aosc.io (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panel: feiyang-fy07024di26a30d: cleanup if panel attaching failed | expand |
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.
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)
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(-)