On 31/12/2021 00:55, Martin Blumenstingl wrote: > When afbcd.ops->init fails we need to free the struct drm_device. Also > all errors which come after afbcd.ops->init was successful need to exit > the AFBCD, just like meson_drv_unbind() does. > > Fixes: d1b5e41e13a7e9 ("drm/meson: Add AFBCD module driver") > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/meson/meson_drv.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c > index b919271a6e50..26aeaf0ab86e 100644 > --- a/drivers/gpu/drm/meson/meson_drv.c > +++ b/drivers/gpu/drm/meson/meson_drv.c > @@ -302,42 +302,42 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) > if (priv->afbcd.ops) { > ret = priv->afbcd.ops->init(priv); > if (ret) > - return ret; > + goto free_drm; > } > > /* Encoder Initialization */ > > ret = meson_encoder_cvbs_init(priv); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > if (has_components) { > ret = component_bind_all(drm->dev, drm); > if (ret) { > dev_err(drm->dev, "Couldn't bind all components\n"); > - goto free_drm; > + goto exit_afbcd; > } > } > > ret = meson_encoder_hdmi_init(priv); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > ret = meson_plane_create(priv); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > ret = meson_overlay_create(priv); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > ret = meson_crtc_create(priv); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > ret = request_irq(priv->vsync_irq, meson_irq, 0, drm->driver->name, drm); > if (ret) > - goto free_drm; > + goto exit_afbcd; > > drm_mode_config_reset(drm); > > @@ -355,6 +355,9 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) > > uninstall_irq: > free_irq(priv->vsync_irq, drm); > +exit_afbcd: > + if (priv->afbcd.ops) > + priv->afbcd.ops->exit(priv); > free_drm: > drm_dev_put(drm); > > Acked-by: Neil Armstrong <narmstrong@xxxxxxxxxxxx> Thanks, But this depends on patch 1, so I'll add the same Fixes tag on patch 1 and add to drm-misc-next so it won't pollute -fixes but will still be eventually be backported when landing on linus master. Neil