Message ID | 20230507162616.1368908-15-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | drm: Convert to platform remove callback returning void | expand |
Hi Uwe, Thank you for the patch. On Sun, May 07, 2023 at 06:25:37PM +0200, Uwe Kleine-König wrote: > The .remove() callback for a platform driver returns an int which makes > many driver authors wrongly assume it's possible to do error handling by > returning an error code. However the value returned is (mostly) ignored > and this typically results in resource leaks. To improve here there is a > quest to make the remove callback return void. In the first step of this > quest all drivers are converted to .remove_new() which already returns > void. > > Trivially convert the synopsis bridge drivers from always returning zero > in the remove callback to the void returning variant. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c | 6 ++---- > drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 6 ++---- > drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c | 6 ++---- > drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 6 ++---- > 4 files changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c > index 4efb62bcdb63..67b8d17a722a 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c > @@ -584,13 +584,11 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) > return ret; > } > > -static int snd_dw_hdmi_remove(struct platform_device *pdev) > +static void snd_dw_hdmi_remove(struct platform_device *pdev) > { > struct snd_dw_hdmi *dw = platform_get_drvdata(pdev); > > snd_card_free(dw->card); > - > - return 0; > } > > #if defined(CONFIG_PM_SLEEP) && defined(IS_NOT_BROKEN) > @@ -625,7 +623,7 @@ static SIMPLE_DEV_PM_OPS(snd_dw_hdmi_pm, snd_dw_hdmi_suspend, > > static struct platform_driver snd_dw_hdmi_driver = { > .probe = snd_dw_hdmi_probe, > - .remove = snd_dw_hdmi_remove, > + .remove_new = snd_dw_hdmi_remove, > .driver = { > .name = DRIVER_NAME, > .pm = PM_OPS, > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c > index c8f44bcb298a..9389ce526eb1 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c > @@ -296,19 +296,17 @@ static int dw_hdmi_cec_probe(struct platform_device *pdev) > return 0; > } > > -static int dw_hdmi_cec_remove(struct platform_device *pdev) > +static void dw_hdmi_cec_remove(struct platform_device *pdev) > { > struct dw_hdmi_cec *cec = platform_get_drvdata(pdev); > > cec_notifier_cec_adap_unregister(cec->notify, cec->adap); > cec_unregister_adapter(cec->adap); > - > - return 0; > } > > static struct platform_driver dw_hdmi_cec_driver = { > .probe = dw_hdmi_cec_probe, > - .remove = dw_hdmi_cec_remove, > + .remove_new = dw_hdmi_cec_remove, > .driver = { > .name = "dw-hdmi-cec", > }, > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c > index 557966239677..423762da2ab4 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c > @@ -172,18 +172,16 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) > return PTR_ERR_OR_ZERO(dw->audio_pdev); > } > > -static int snd_dw_hdmi_remove(struct platform_device *pdev) > +static void snd_dw_hdmi_remove(struct platform_device *pdev) > { > struct snd_dw_hdmi *dw = platform_get_drvdata(pdev); > > platform_device_unregister(dw->audio_pdev); > - > - return 0; > } > > static struct platform_driver snd_dw_hdmi_driver = { > .probe = snd_dw_hdmi_probe, > - .remove = snd_dw_hdmi_remove, > + .remove_new = snd_dw_hdmi_remove, > .driver = { > .name = DRIVER_NAME, > }, > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c > index d751820c6da6..26c187d20d97 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c > @@ -216,18 +216,16 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) > return 0; > } > > -static int snd_dw_hdmi_remove(struct platform_device *pdev) > +static void snd_dw_hdmi_remove(struct platform_device *pdev) > { > struct platform_device *platform = dev_get_drvdata(&pdev->dev); > > platform_device_unregister(platform); > - > - return 0; > } > > static struct platform_driver snd_dw_hdmi_driver = { > .probe = snd_dw_hdmi_probe, > - .remove = snd_dw_hdmi_remove, > + .remove_new = snd_dw_hdmi_remove, > .driver = { > .name = DRIVER_NAME, > }, > -- > 2.39.2 >
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c index 4efb62bcdb63..67b8d17a722a 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c @@ -584,13 +584,11 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) return ret; } -static int snd_dw_hdmi_remove(struct platform_device *pdev) +static void snd_dw_hdmi_remove(struct platform_device *pdev) { struct snd_dw_hdmi *dw = platform_get_drvdata(pdev); snd_card_free(dw->card); - - return 0; } #if defined(CONFIG_PM_SLEEP) && defined(IS_NOT_BROKEN) @@ -625,7 +623,7 @@ static SIMPLE_DEV_PM_OPS(snd_dw_hdmi_pm, snd_dw_hdmi_suspend, static struct platform_driver snd_dw_hdmi_driver = { .probe = snd_dw_hdmi_probe, - .remove = snd_dw_hdmi_remove, + .remove_new = snd_dw_hdmi_remove, .driver = { .name = DRIVER_NAME, .pm = PM_OPS, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c index c8f44bcb298a..9389ce526eb1 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c @@ -296,19 +296,17 @@ static int dw_hdmi_cec_probe(struct platform_device *pdev) return 0; } -static int dw_hdmi_cec_remove(struct platform_device *pdev) +static void dw_hdmi_cec_remove(struct platform_device *pdev) { struct dw_hdmi_cec *cec = platform_get_drvdata(pdev); cec_notifier_cec_adap_unregister(cec->notify, cec->adap); cec_unregister_adapter(cec->adap); - - return 0; } static struct platform_driver dw_hdmi_cec_driver = { .probe = dw_hdmi_cec_probe, - .remove = dw_hdmi_cec_remove, + .remove_new = dw_hdmi_cec_remove, .driver = { .name = "dw-hdmi-cec", }, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c index 557966239677..423762da2ab4 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c @@ -172,18 +172,16 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) return PTR_ERR_OR_ZERO(dw->audio_pdev); } -static int snd_dw_hdmi_remove(struct platform_device *pdev) +static void snd_dw_hdmi_remove(struct platform_device *pdev) { struct snd_dw_hdmi *dw = platform_get_drvdata(pdev); platform_device_unregister(dw->audio_pdev); - - return 0; } static struct platform_driver snd_dw_hdmi_driver = { .probe = snd_dw_hdmi_probe, - .remove = snd_dw_hdmi_remove, + .remove_new = snd_dw_hdmi_remove, .driver = { .name = DRIVER_NAME, }, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c index d751820c6da6..26c187d20d97 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c @@ -216,18 +216,16 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) return 0; } -static int snd_dw_hdmi_remove(struct platform_device *pdev) +static void snd_dw_hdmi_remove(struct platform_device *pdev) { struct platform_device *platform = dev_get_drvdata(&pdev->dev); platform_device_unregister(platform); - - return 0; } static struct platform_driver snd_dw_hdmi_driver = { .probe = snd_dw_hdmi_probe, - .remove = snd_dw_hdmi_remove, + .remove_new = snd_dw_hdmi_remove, .driver = { .name = DRIVER_NAME, },
The .remove() callback for a platform driver returns an int which makes many driver authors wrongly assume it's possible to do error handling by returning an error code. However the value returned is (mostly) ignored and this typically results in resource leaks. To improve here there is a quest to make the remove callback return void. In the first step of this quest all drivers are converted to .remove_new() which already returns void. Trivially convert the synopsis bridge drivers from always returning zero in the remove callback to the void returning variant. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c | 6 ++---- drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 6 ++---- drivers/gpu/drm/bridge/synopsys/dw-hdmi-gp-audio.c | 6 ++---- drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 6 ++---- 4 files changed, 8 insertions(+), 16 deletions(-)