[PATCH v3 16/16] drm/tilcdc: Convert to platform remove callback returning void

jyri.sarha at iki.fi jyri.sarha at iki.fi
Tue Nov 28 19:47:01 UTC 2023


November 2, 2023 at 6:56 PM, "Uwe Kleine-König" <u.kleine-koenig at pengutronix.de mailto:u.kleine-koenig at pengutronix.de?to=%22Uwe%20Kleine-K%C3%B6nig%22%20%3Cu.kleine-koenig%40pengutronix.de%3E > 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.
> 
> There is one error path in tilcdc_pdev_remove() that potentially could
> yield a non-zero return code. In this case an error message describing
> the failure is emitted now instead of
> 
>  remove callback returned a non-zero value. This will be ignored.
> 
> before. Otherwise there is no difference. Also note that currently
> tilcdc_get_external_components() doesn't return negative values.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>

Applied this on top of drm-misc-next, dug up my good old Beaglebone-Black,and tested that everything still works, so:

Tested-by: Jyri Sarha <jyri.sarha at iki.fi>

I'll apply this shortly to drm-misc-next.

Best regards,
Jyri

> ---
> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 8ebd7134ee21..137cd9f62e9f 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -570,19 +570,18 @@ static int tilcdc_pdev_probe(struct platform_device *pdev)
>  match);
> }
> 
> -static int tilcdc_pdev_remove(struct platform_device *pdev)
> +static void tilcdc_pdev_remove(struct platform_device *pdev)
> {
>  int ret;
> 
>  ret = tilcdc_get_external_components(&pdev->dev, NULL);
>  if (ret < 0)
> - return ret;
> + dev_err(&pdev->dev, "tilcdc_get_external_components() failed (%pe)\n",
> + ERR_PTR(ret));
>  else if (ret == 0)
>  tilcdc_fini(platform_get_drvdata(pdev));
>  else
>  component_master_del(&pdev->dev, &tilcdc_comp_ops);
> -
> - return 0;
> }
> 
> static void tilcdc_pdev_shutdown(struct platform_device *pdev)
> @@ -599,7 +598,7 @@ MODULE_DEVICE_TABLE(of, tilcdc_of_match);
> 
> static struct platform_driver tilcdc_platform_driver = {
>  .probe = tilcdc_pdev_probe,
> - .remove = tilcdc_pdev_remove,
> + .remove_new = tilcdc_pdev_remove,
>  .shutdown = tilcdc_pdev_shutdown,
>  .driver = {
>  .name = "tilcdc",
> -- 
> 2.42.0
>


More information about the dri-devel mailing list