diff mbox series

drm/bridge: adv7511: clean up CEC adapter when probe fails

Message ID 20220321104705.2804423-1-l.stach@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series drm/bridge: adv7511: clean up CEC adapter when probe fails | expand

Commit Message

Lucas Stach March 21, 2022, 10:47 a.m. UTC
When the probe routine fails we also need to clean up the
CEC adapter registered in adv7511_cec_init().

Fixes: 3b1b975003e4 ("drm: adv7511/33: add HDMI CEC support")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
The "fixed" commit is not the one introducing the issue, it had been
there as long as the driver supported CEC, but is the earliest commit
that allows conflict free backporting.
864c49a31d6b ("drm/bridge: adv7511: Register and attach our DSI
device at probe") made the issue much more likely to be hit, as the
DSI attach may return -EPROBE_DEFER, so the cleanup path is exercised
a lot more.
---
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Robert Foss March 31, 2022, 12:10 p.m. UTC | #1
On Mon, 21 Mar 2022 at 11:47, Lucas Stach <l.stach@pengutronix.de> wrote:
>
> When the probe routine fails we also need to clean up the
> CEC adapter registered in adv7511_cec_init().
>
> Fixes: 3b1b975003e4 ("drm: adv7511/33: add HDMI CEC support")
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> ---
> The "fixed" commit is not the one introducing the issue, it had been
> there as long as the driver supported CEC, but is the earliest commit
> that allows conflict free backporting.
> 864c49a31d6b ("drm/bridge: adv7511: Register and attach our DSI
> device at probe") made the issue much more likely to be hit, as the
> DSI attach may return -EPROBE_DEFER, so the cleanup path is exercised
> a lot more.
> ---
>  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> index f8e5da148599..370eb8d5d39b 100644
> --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> @@ -1298,6 +1298,7 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
>         adv7511_audio_exit(adv7511);
>         drm_bridge_remove(&adv7511->bridge);
>  err_unregister_cec:
> +       cec_unregister_adapter(adv7511->cec_adap);
>         i2c_unregister_device(adv7511->i2c_cec);
>         clk_disable_unprepare(adv7511->cec_clk);
>  err_i2c_unregister_packet:
> --
> 2.34.1
>

Reviewed-by: Robert Foss <robert.foss@linaro.org>

Applied to drm-misc-next.
diff mbox series

Patch

diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index f8e5da148599..370eb8d5d39b 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -1298,6 +1298,7 @@  static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
 	adv7511_audio_exit(adv7511);
 	drm_bridge_remove(&adv7511->bridge);
 err_unregister_cec:
+	cec_unregister_adapter(adv7511->cec_adap);
 	i2c_unregister_device(adv7511->i2c_cec);
 	clk_disable_unprepare(adv7511->cec_clk);
 err_i2c_unregister_packet: