On Fr, 2022-01-28 at 17:19 +0800, Liu Ying wrote: > In dw_hdmi_imx_probe(), if error happens after dw_hdmi_probe() > returns > successfully, dw_hdmi_remove() should be called where necessary as > bailout. > > Fixes: c805ec7eb210 ("drm/imx: dw_hdmi-imx: move initialization into > probe") > Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > Cc: Shawn Guo <shawnguo@xxxxxxxxxx> > Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> > Cc: Fabio Estevam <festevam@xxxxxxxxx> > Cc: NXP Linux Team <linux-imx@xxxxxxx> > Signed-off-by: Liu Ying <victor.liu@xxxxxxx> > --- > drivers/gpu/drm/imx/dw_hdmi-imx.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c > b/drivers/gpu/drm/imx/dw_hdmi-imx.c > index 87428fb23d9f..a2277a0d6d06 100644 > --- a/drivers/gpu/drm/imx/dw_hdmi-imx.c > +++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c > @@ -222,6 +222,7 @@ static int dw_hdmi_imx_probe(struct > platform_device *pdev) > struct device_node *np = pdev->dev.of_node; > const struct of_device_id *match = > of_match_node(dw_hdmi_imx_dt_ids, np); > struct imx_hdmi *hdmi; > + int ret; > > hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); > if (!hdmi) > @@ -243,10 +244,15 @@ static int dw_hdmi_imx_probe(struct > platform_device *pdev) > hdmi->bridge = of_drm_find_bridge(np); > if (!hdmi->bridge) { > dev_err(hdmi->dev, "Unable to find bridge\n"); > + dw_hdmi_remove(hdmi->hdmi); > return -ENODEV; > } > > - return component_add(&pdev->dev, &dw_hdmi_imx_ops); > + ret = component_add(&pdev->dev, &dw_hdmi_imx_ops); > + if (ret) > + dw_hdmi_remove(hdmi->hdmi); > + > + return ret; > } > > static int dw_hdmi_imx_remove(struct platform_device *pdev) Thank you, applied to imx-drm/fixes. regards Philipp