Re: [PATCH 34/53] drm/omap: Convert to platform remove callback returning void

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Uwe,

Thank you for the patch.

On Sun, May 07, 2023 at 06:25:57PM +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 omap drm driver from always returning zero in the
> remove callback to the void returning variant.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
>  drivers/gpu/drm/omapdrm/dss/dispc.c      | 5 ++---
>  drivers/gpu/drm/omapdrm/dss/dsi.c        | 6 ++----
>  drivers/gpu/drm/omapdrm/dss/dss.c        | 6 ++----
>  drivers/gpu/drm/omapdrm/dss/hdmi4.c      | 5 ++---
>  drivers/gpu/drm/omapdrm/dss/hdmi5.c      | 5 ++---
>  drivers/gpu/drm/omapdrm/dss/venc.c       | 5 ++---
>  drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 9 +++------
>  drivers/gpu/drm/omapdrm/omap_drv.c       | 6 ++----
>  8 files changed, 17 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
> index aacad5045e95..c26aab4939fa 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -4858,10 +4858,9 @@ static int dispc_probe(struct platform_device *pdev)
>  	return component_add(&pdev->dev, &dispc_component_ops);
>  }
>  
> -static int dispc_remove(struct platform_device *pdev)
> +static void dispc_remove(struct platform_device *pdev)
>  {
>  	component_del(&pdev->dev, &dispc_component_ops);
> -	return 0;
>  }
>  
>  static __maybe_unused int dispc_runtime_suspend(struct device *dev)
> @@ -4913,7 +4912,7 @@ static const struct dev_pm_ops dispc_pm_ops = {
>  
>  struct platform_driver omap_dispchw_driver = {
>  	.probe		= dispc_probe,
> -	.remove         = dispc_remove,
> +	.remove_new     = dispc_remove,
>  	.driver         = {
>  		.name   = "omapdss_dispc",
>  		.pm	= &dispc_pm_ops,
> diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
> index 4c1084eb0175..ea63c64d3a1a 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dsi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
> @@ -5044,7 +5044,7 @@ static int dsi_probe(struct platform_device *pdev)
>  	return r;
>  }
>  
> -static int dsi_remove(struct platform_device *pdev)
> +static void dsi_remove(struct platform_device *pdev)
>  {
>  	struct dsi_data *dsi = platform_get_drvdata(pdev);
>  
> @@ -5060,8 +5060,6 @@ static int dsi_remove(struct platform_device *pdev)
>  		regulator_disable(dsi->vdds_dsi_reg);
>  		dsi->vdds_dsi_enabled = false;
>  	}
> -
> -	return 0;
>  }
>  
>  static __maybe_unused int dsi_runtime_suspend(struct device *dev)
> @@ -5095,7 +5093,7 @@ static const struct dev_pm_ops dsi_pm_ops = {
>  
>  struct platform_driver omap_dsihw_driver = {
>  	.probe		= dsi_probe,
> -	.remove		= dsi_remove,
> +	.remove_new	= dsi_remove,
>  	.driver         = {
>  		.name   = "omapdss_dsi",
>  		.pm	= &dsi_pm_ops,
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> index c4febb861910..02955f976845 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -1532,7 +1532,7 @@ static int dss_probe(struct platform_device *pdev)
>  	return r;
>  }
>  
> -static int dss_remove(struct platform_device *pdev)
> +static void dss_remove(struct platform_device *pdev)
>  {
>  	struct dss_device *dss = platform_get_drvdata(pdev);
>  
> @@ -1557,8 +1557,6 @@ static int dss_remove(struct platform_device *pdev)
>  	dss_put_clocks(dss);
>  
>  	kfree(dss);
> -
> -	return 0;
>  }
>  
>  static void dss_shutdown(struct platform_device *pdev)
> @@ -1607,7 +1605,7 @@ static const struct dev_pm_ops dss_pm_ops = {
>  
>  struct platform_driver omap_dsshw_driver = {
>  	.probe		= dss_probe,
> -	.remove		= dss_remove,
> +	.remove_new	= dss_remove,
>  	.shutdown	= dss_shutdown,
>  	.driver         = {
>  		.name   = "omapdss_dss",
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> index a8a75dc24751..a26b77d99d52 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> @@ -824,7 +824,7 @@ static int hdmi4_probe(struct platform_device *pdev)
>  	return r;
>  }
>  
> -static int hdmi4_remove(struct platform_device *pdev)
> +static void hdmi4_remove(struct platform_device *pdev)
>  {
>  	struct omap_hdmi *hdmi = platform_get_drvdata(pdev);
>  
> @@ -835,7 +835,6 @@ static int hdmi4_remove(struct platform_device *pdev)
>  	pm_runtime_disable(&pdev->dev);
>  
>  	kfree(hdmi);
> -	return 0;
>  }
>  
>  static const struct of_device_id hdmi_of_match[] = {
> @@ -845,7 +844,7 @@ static const struct of_device_id hdmi_of_match[] = {
>  
>  struct platform_driver omapdss_hdmi4hw_driver = {
>  	.probe		= hdmi4_probe,
> -	.remove		= hdmi4_remove,
> +	.remove_new	= hdmi4_remove,
>  	.driver         = {
>  		.name   = "omapdss_hdmi",
>  		.of_match_table = hdmi_of_match,
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> index 868712cd8a3a..e6611c683857 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> @@ -798,7 +798,7 @@ static int hdmi5_probe(struct platform_device *pdev)
>  	return r;
>  }
>  
> -static int hdmi5_remove(struct platform_device *pdev)
> +static void hdmi5_remove(struct platform_device *pdev)
>  {
>  	struct omap_hdmi *hdmi = platform_get_drvdata(pdev);
>  
> @@ -809,7 +809,6 @@ static int hdmi5_remove(struct platform_device *pdev)
>  	pm_runtime_disable(&pdev->dev);
>  
>  	kfree(hdmi);
> -	return 0;
>  }
>  
>  static const struct of_device_id hdmi_of_match[] = {
> @@ -820,7 +819,7 @@ static const struct of_device_id hdmi_of_match[] = {
>  
>  struct platform_driver omapdss_hdmi5hw_driver = {
>  	.probe		= hdmi5_probe,
> -	.remove		= hdmi5_remove,
> +	.remove_new	= hdmi5_remove,
>  	.driver         = {
>  		.name   = "omapdss_hdmi5",
>  		.of_match_table = hdmi_of_match,
> diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
> index 4480b69ab5a7..f163d52a7c7d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/venc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/venc.c
> @@ -865,7 +865,7 @@ static int venc_probe(struct platform_device *pdev)
>  	return r;
>  }
>  
> -static int venc_remove(struct platform_device *pdev)
> +static void venc_remove(struct platform_device *pdev)
>  {
>  	struct venc_device *venc = platform_get_drvdata(pdev);
>  
> @@ -876,7 +876,6 @@ static int venc_remove(struct platform_device *pdev)
>  	pm_runtime_disable(&pdev->dev);
>  
>  	kfree(venc);
> -	return 0;
>  }
>  
>  static __maybe_unused int venc_runtime_suspend(struct device *dev)
> @@ -913,7 +912,7 @@ static const struct of_device_id venc_of_match[] = {
>  
>  struct platform_driver omap_venchw_driver = {
>  	.probe		= venc_probe,
> -	.remove		= venc_remove,
> +	.remove_new	= venc_remove,
>  	.driver         = {
>  		.name   = "omapdss_venc",
>  		.pm	= &venc_pm_ops,
> diff --git a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
> index 61a27dd7392e..9753c1e1f994 100644
> --- a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
> +++ b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
> @@ -723,7 +723,7 @@ bool dmm_is_available(void)
>  	return omap_dmm ? true : false;
>  }
>  
> -static int omap_dmm_remove(struct platform_device *dev)
> +static void omap_dmm_remove(struct platform_device *dev)
>  {
>  	struct tiler_block *block, *_block;
>  	int i;
> @@ -763,8 +763,6 @@ static int omap_dmm_remove(struct platform_device *dev)
>  		kfree(omap_dmm);
>  		omap_dmm = NULL;
>  	}
> -
> -	return 0;
>  }
>  
>  static int omap_dmm_probe(struct platform_device *dev)
> @@ -982,8 +980,7 @@ static int omap_dmm_probe(struct platform_device *dev)
>  	return 0;
>  
>  fail:
> -	if (omap_dmm_remove(dev))
> -		dev_err(&dev->dev, "cleanup failed\n");
> +	omap_dmm_remove(dev);
>  	return ret;
>  }
>  
> @@ -1213,7 +1210,7 @@ static const struct of_device_id dmm_of_match[] = {
>  
>  struct platform_driver omap_dmm_driver = {
>  	.probe = omap_dmm_probe,
> -	.remove = omap_dmm_remove,
> +	.remove_new = omap_dmm_remove,
>  	.driver = {
>  		.owner = THIS_MODULE,
>  		.name = DMM_DRIVER_NAME,
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 699ed814e021..fcab66fbcfbf 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -826,14 +826,12 @@ static int pdev_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int pdev_remove(struct platform_device *pdev)
> +static void pdev_remove(struct platform_device *pdev)
>  {
>  	struct omap_drm_private *priv = platform_get_drvdata(pdev);
>  
>  	omapdrm_cleanup(priv);
>  	kfree(priv);
> -
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM_SLEEP
> @@ -864,7 +862,7 @@ static struct platform_driver pdev = {
>  		.pm = &omapdrm_pm_ops,
>  	},
>  	.probe = pdev_probe,
> -	.remove = pdev_remove,
> +	.remove_new = pdev_remove,
>  };
>  
>  static struct platform_driver * const drivers[] = {
> -- 
> 2.39.2
> 

-- 
Regards,

Laurent Pinchart



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux