All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/18] remoteproc: Convert to platform remove callback returning void
@ 2023-05-04 19:44 ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer,
	Neil Armstrong, Kevin Hilman, Matthias Brugger, Andy Gross,
	Patrice Chotard, Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, kernel, Fabio Estevam, NXP Linux Team,
	linux-arm-kernel, Jerome Brunet, Martin Blumenstingl,
	linux-amlogic, AngeloGioacchino Del Regno, linux-mediatek,
	Konrad Dybcio, linux-arm-msm, linux-stm32

Hello,

this patch series adapts most platform drivers below drivers/remoteproc
to use the .remove_new() callback. Compared to the traditional .remove()
callback .remove_new() returns no value. This is a good thing because
the driver core doesn't (and cannot) cope for errors during remove. The
only effect of a non-zero return value in .remove() is that the driver
core emits a warning. The device is removed anyhow and an early return
from .remove() usually yields a resource leak. One driver suffering from
this problem (s3c2410) is fixed by the first patch.

By changing the remove callback to return void driver authors cannot
reasonably (but wrongly) assume any more that there happens some kind of
cleanup later.

There is one driver (i.e. ti_k3_dsp_remoteproc.c) that might return an
error code in .remove(). I didn't look in detail into this driver, but
if that error happens, we have exactly the bad situation described
above. (Note that kproc->mem and the register mapping goes away.)

Best regards
Uwe

Uwe Kleine-König (18):
  remoteproc: da8xx: Convert to platform remove callback returning void
  remoteproc: imx_dsp: Convert to platform remove callback returning
    void
  remoteproc: imx: Convert to platform remove callback returning void
  remoteproc: keystone: Convert to platform remove callback returning
    void
  remoteproc: meson_mx_ao_arc: Convert to platform remove callback
    returning void
  remoteproc: mtk_scp: Convert to platform remove callback returning
    void
  remoteproc: omap: Convert to platform remove callback returning void
  remoteproc: pru: Convert to platform remove callback returning void
  remoteproc: qcom_q6v5_adsp: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_mss: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_pas: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_wcss: Convert to platform remove callback
    returning void
  remoteproc: qcom_wcnss: Convert to platform remove callback returning
    void
  remoteproc: rcar: Convert to platform remove callback returning void
  remoteproc: virtio: Convert to platform remove callback returning void
  remoteproc: st: Convert to platform remove callback returning void
  remoteproc: stm32: Convert to platform remove callback returning void
  remoteproc: wkup_m3: Convert to platform remove callback returning
    void

 drivers/remoteproc/da8xx_remoteproc.c    | 6 ++----
 drivers/remoteproc/imx_dsp_rproc.c       | 6 ++----
 drivers/remoteproc/imx_rproc.c           | 6 ++----
 drivers/remoteproc/keystone_remoteproc.c | 6 ++----
 drivers/remoteproc/meson_mx_ao_arc.c     | 6 ++----
 drivers/remoteproc/mtk_scp.c             | 6 ++----
 drivers/remoteproc/omap_remoteproc.c     | 6 ++----
 drivers/remoteproc/pru_rproc.c           | 6 ++----
 drivers/remoteproc/qcom_q6v5_adsp.c      | 6 ++----
 drivers/remoteproc/qcom_q6v5_mss.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_pas.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_wcss.c      | 6 ++----
 drivers/remoteproc/qcom_wcnss.c          | 6 ++----
 drivers/remoteproc/rcar_rproc.c          | 6 ++----
 drivers/remoteproc/remoteproc_virtio.c   | 6 ++----
 drivers/remoteproc/st_remoteproc.c       | 6 ++----
 drivers/remoteproc/stm32_rproc.c         | 6 ++----
 drivers/remoteproc/wkup_m3_rproc.c       | 6 ++----
 18 files changed, 36 insertions(+), 72 deletions(-)


base-commit: 1a5304fecee523060f26e2778d9d8e33c0562df3
-- 
2.39.2


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 00/18] remoteproc: Convert to platform remove callback returning void
@ 2023-05-04 19:44 ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer,
	Neil Armstrong, Kevin Hilman, Matthias Brugger, Andy Gross,
	Patrice Chotard, Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, kernel, Fabio Estevam, NXP Linux Team,
	linux-arm-kernel, Jerome Brunet, Martin Blumenstingl,
	linux-amlogic, AngeloGioacchino Del Regno, linux-mediatek,
	Konrad Dybcio, linux-arm-msm, linux-stm32

Hello,

this patch series adapts most platform drivers below drivers/remoteproc
to use the .remove_new() callback. Compared to the traditional .remove()
callback .remove_new() returns no value. This is a good thing because
the driver core doesn't (and cannot) cope for errors during remove. The
only effect of a non-zero return value in .remove() is that the driver
core emits a warning. The device is removed anyhow and an early return
from .remove() usually yields a resource leak. One driver suffering from
this problem (s3c2410) is fixed by the first patch.

By changing the remove callback to return void driver authors cannot
reasonably (but wrongly) assume any more that there happens some kind of
cleanup later.

There is one driver (i.e. ti_k3_dsp_remoteproc.c) that might return an
error code in .remove(). I didn't look in detail into this driver, but
if that error happens, we have exactly the bad situation described
above. (Note that kproc->mem and the register mapping goes away.)

Best regards
Uwe

Uwe Kleine-König (18):
  remoteproc: da8xx: Convert to platform remove callback returning void
  remoteproc: imx_dsp: Convert to platform remove callback returning
    void
  remoteproc: imx: Convert to platform remove callback returning void
  remoteproc: keystone: Convert to platform remove callback returning
    void
  remoteproc: meson_mx_ao_arc: Convert to platform remove callback
    returning void
  remoteproc: mtk_scp: Convert to platform remove callback returning
    void
  remoteproc: omap: Convert to platform remove callback returning void
  remoteproc: pru: Convert to platform remove callback returning void
  remoteproc: qcom_q6v5_adsp: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_mss: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_pas: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_wcss: Convert to platform remove callback
    returning void
  remoteproc: qcom_wcnss: Convert to platform remove callback returning
    void
  remoteproc: rcar: Convert to platform remove callback returning void
  remoteproc: virtio: Convert to platform remove callback returning void
  remoteproc: st: Convert to platform remove callback returning void
  remoteproc: stm32: Convert to platform remove callback returning void
  remoteproc: wkup_m3: Convert to platform remove callback returning
    void

 drivers/remoteproc/da8xx_remoteproc.c    | 6 ++----
 drivers/remoteproc/imx_dsp_rproc.c       | 6 ++----
 drivers/remoteproc/imx_rproc.c           | 6 ++----
 drivers/remoteproc/keystone_remoteproc.c | 6 ++----
 drivers/remoteproc/meson_mx_ao_arc.c     | 6 ++----
 drivers/remoteproc/mtk_scp.c             | 6 ++----
 drivers/remoteproc/omap_remoteproc.c     | 6 ++----
 drivers/remoteproc/pru_rproc.c           | 6 ++----
 drivers/remoteproc/qcom_q6v5_adsp.c      | 6 ++----
 drivers/remoteproc/qcom_q6v5_mss.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_pas.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_wcss.c      | 6 ++----
 drivers/remoteproc/qcom_wcnss.c          | 6 ++----
 drivers/remoteproc/rcar_rproc.c          | 6 ++----
 drivers/remoteproc/remoteproc_virtio.c   | 6 ++----
 drivers/remoteproc/st_remoteproc.c       | 6 ++----
 drivers/remoteproc/stm32_rproc.c         | 6 ++----
 drivers/remoteproc/wkup_m3_rproc.c       | 6 ++----
 18 files changed, 36 insertions(+), 72 deletions(-)


base-commit: 1a5304fecee523060f26e2778d9d8e33c0562df3
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 00/18] remoteproc: Convert to platform remove callback returning void
@ 2023-05-04 19:44 ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer,
	Neil Armstrong, Kevin Hilman, Matthias Brugger, Andy Gross,
	Patrice Chotard, Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, kernel, Fabio Estevam, NXP Linux Team,
	linux-arm-kernel, Jerome Brunet, Martin Blumenstingl,
	linux-amlogic, AngeloGioacchino Del Regno, linux-mediatek,
	Konrad Dybcio, linux-arm-msm, linux-stm32

Hello,

this patch series adapts most platform drivers below drivers/remoteproc
to use the .remove_new() callback. Compared to the traditional .remove()
callback .remove_new() returns no value. This is a good thing because
the driver core doesn't (and cannot) cope for errors during remove. The
only effect of a non-zero return value in .remove() is that the driver
core emits a warning. The device is removed anyhow and an early return
from .remove() usually yields a resource leak. One driver suffering from
this problem (s3c2410) is fixed by the first patch.

By changing the remove callback to return void driver authors cannot
reasonably (but wrongly) assume any more that there happens some kind of
cleanup later.

There is one driver (i.e. ti_k3_dsp_remoteproc.c) that might return an
error code in .remove(). I didn't look in detail into this driver, but
if that error happens, we have exactly the bad situation described
above. (Note that kproc->mem and the register mapping goes away.)

Best regards
Uwe

Uwe Kleine-König (18):
  remoteproc: da8xx: Convert to platform remove callback returning void
  remoteproc: imx_dsp: Convert to platform remove callback returning
    void
  remoteproc: imx: Convert to platform remove callback returning void
  remoteproc: keystone: Convert to platform remove callback returning
    void
  remoteproc: meson_mx_ao_arc: Convert to platform remove callback
    returning void
  remoteproc: mtk_scp: Convert to platform remove callback returning
    void
  remoteproc: omap: Convert to platform remove callback returning void
  remoteproc: pru: Convert to platform remove callback returning void
  remoteproc: qcom_q6v5_adsp: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_mss: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_pas: Convert to platform remove callback
    returning void
  remoteproc: qcom_q6v5_wcss: Convert to platform remove callback
    returning void
  remoteproc: qcom_wcnss: Convert to platform remove callback returning
    void
  remoteproc: rcar: Convert to platform remove callback returning void
  remoteproc: virtio: Convert to platform remove callback returning void
  remoteproc: st: Convert to platform remove callback returning void
  remoteproc: stm32: Convert to platform remove callback returning void
  remoteproc: wkup_m3: Convert to platform remove callback returning
    void

 drivers/remoteproc/da8xx_remoteproc.c    | 6 ++----
 drivers/remoteproc/imx_dsp_rproc.c       | 6 ++----
 drivers/remoteproc/imx_rproc.c           | 6 ++----
 drivers/remoteproc/keystone_remoteproc.c | 6 ++----
 drivers/remoteproc/meson_mx_ao_arc.c     | 6 ++----
 drivers/remoteproc/mtk_scp.c             | 6 ++----
 drivers/remoteproc/omap_remoteproc.c     | 6 ++----
 drivers/remoteproc/pru_rproc.c           | 6 ++----
 drivers/remoteproc/qcom_q6v5_adsp.c      | 6 ++----
 drivers/remoteproc/qcom_q6v5_mss.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_pas.c       | 6 ++----
 drivers/remoteproc/qcom_q6v5_wcss.c      | 6 ++----
 drivers/remoteproc/qcom_wcnss.c          | 6 ++----
 drivers/remoteproc/rcar_rproc.c          | 6 ++----
 drivers/remoteproc/remoteproc_virtio.c   | 6 ++----
 drivers/remoteproc/st_remoteproc.c       | 6 ++----
 drivers/remoteproc/stm32_rproc.c         | 6 ++----
 drivers/remoteproc/wkup_m3_rproc.c       | 6 ++----
 18 files changed, 36 insertions(+), 72 deletions(-)


base-commit: 1a5304fecee523060f26e2778d9d8e33c0562df3
-- 
2.39.2


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 01/18] remoteproc: da8xx: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
  (?)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/da8xx_remoteproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index 768217f0f5cd..9041a0e07fb2 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -357,7 +357,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int da8xx_rproc_remove(struct platform_device *pdev)
+static void da8xx_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct da8xx_rproc *drproc = rproc->priv;
@@ -374,8 +374,6 @@ static int da8xx_rproc_remove(struct platform_device *pdev)
 	rproc_free(rproc);
 	if (dev->of_node)
 		of_reserved_mem_device_release(dev);
-
-	return 0;
 }
 
 static const struct of_device_id davinci_rproc_of_match[] __maybe_unused = {
@@ -386,7 +384,7 @@ MODULE_DEVICE_TABLE(of, davinci_rproc_of_match);
 
 static struct platform_driver da8xx_rproc_driver = {
 	.probe = da8xx_rproc_probe,
-	.remove = da8xx_rproc_remove,
+	.remove_new = da8xx_rproc_remove,
 	.driver = {
 		.name = "davinci-rproc",
 		.of_match_table = of_match_ptr(davinci_rproc_of_match),
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 02/18] remoteproc: imx_dsp: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

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 this driver 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/remoteproc/imx_dsp_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
index cab06dbf37fb..bda7f2a910e0 100644
--- a/drivers/remoteproc/imx_dsp_rproc.c
+++ b/drivers/remoteproc/imx_dsp_rproc.c
@@ -1161,7 +1161,7 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int imx_dsp_rproc_remove(struct platform_device *pdev)
+static void imx_dsp_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct imx_dsp_rproc *priv = rproc->priv;
@@ -1170,8 +1170,6 @@ static int imx_dsp_rproc_remove(struct platform_device *pdev)
 	rproc_del(rproc);
 	imx_dsp_detach_pm_domains(priv);
 	rproc_free(rproc);
-
-	return 0;
 }
 
 /* pm runtime functions */
@@ -1328,7 +1326,7 @@ MODULE_DEVICE_TABLE(of, imx_dsp_rproc_of_match);
 
 static struct platform_driver imx_dsp_rproc_driver = {
 	.probe = imx_dsp_rproc_probe,
-	.remove = imx_dsp_rproc_remove,
+	.remove_new = imx_dsp_rproc_remove,
 	.driver = {
 		.name = "imx-dsp-rproc",
 		.of_match_table = imx_dsp_rproc_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 02/18] remoteproc: imx_dsp: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

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 this driver 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/remoteproc/imx_dsp_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
index cab06dbf37fb..bda7f2a910e0 100644
--- a/drivers/remoteproc/imx_dsp_rproc.c
+++ b/drivers/remoteproc/imx_dsp_rproc.c
@@ -1161,7 +1161,7 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int imx_dsp_rproc_remove(struct platform_device *pdev)
+static void imx_dsp_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct imx_dsp_rproc *priv = rproc->priv;
@@ -1170,8 +1170,6 @@ static int imx_dsp_rproc_remove(struct platform_device *pdev)
 	rproc_del(rproc);
 	imx_dsp_detach_pm_domains(priv);
 	rproc_free(rproc);
-
-	return 0;
 }
 
 /* pm runtime functions */
@@ -1328,7 +1326,7 @@ MODULE_DEVICE_TABLE(of, imx_dsp_rproc_of_match);
 
 static struct platform_driver imx_dsp_rproc_driver = {
 	.probe = imx_dsp_rproc_probe,
-	.remove = imx_dsp_rproc_remove,
+	.remove_new = imx_dsp_rproc_remove,
 	.driver = {
 		.name = "imx-dsp-rproc",
 		.of_match_table = imx_dsp_rproc_of_match,
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 03/18] remoteproc: imx: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

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 this driver 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/remoteproc/imx_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 0ab840dc7e97..f9874fc5a80f 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -1112,7 +1112,7 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int imx_rproc_remove(struct platform_device *pdev)
+static void imx_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct imx_rproc *priv = rproc->priv;
@@ -1123,8 +1123,6 @@ static int imx_rproc_remove(struct platform_device *pdev)
 	imx_rproc_free_mbox(rproc);
 	destroy_workqueue(priv->workqueue);
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static const struct of_device_id imx_rproc_of_match[] = {
@@ -1145,7 +1143,7 @@ MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
 
 static struct platform_driver imx_rproc_driver = {
 	.probe = imx_rproc_probe,
-	.remove = imx_rproc_remove,
+	.remove_new = imx_rproc_remove,
 	.driver = {
 		.name = "imx-rproc",
 		.of_match_table = imx_rproc_of_match,
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 03/18] remoteproc: imx: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

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 this driver 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/remoteproc/imx_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 0ab840dc7e97..f9874fc5a80f 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -1112,7 +1112,7 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int imx_rproc_remove(struct platform_device *pdev)
+static void imx_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct imx_rproc *priv = rproc->priv;
@@ -1123,8 +1123,6 @@ static int imx_rproc_remove(struct platform_device *pdev)
 	imx_rproc_free_mbox(rproc);
 	destroy_workqueue(priv->workqueue);
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static const struct of_device_id imx_rproc_of_match[] = {
@@ -1145,7 +1143,7 @@ MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
 
 static struct platform_driver imx_rproc_driver = {
 	.probe = imx_rproc_probe,
-	.remove = imx_rproc_remove,
+	.remove_new = imx_rproc_remove,
 	.driver = {
 		.name = "imx-rproc",
 		.of_match_table = imx_rproc_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 04/18] remoteproc: keystone: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (4 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/keystone_remoteproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/keystone_remoteproc.c b/drivers/remoteproc/keystone_remoteproc.c
index 95b39741925d..7e57b90bcaf8 100644
--- a/drivers/remoteproc/keystone_remoteproc.c
+++ b/drivers/remoteproc/keystone_remoteproc.c
@@ -476,7 +476,7 @@ static int keystone_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int keystone_rproc_remove(struct platform_device *pdev)
+static void keystone_rproc_remove(struct platform_device *pdev)
 {
 	struct keystone_rproc *ksproc = platform_get_drvdata(pdev);
 
@@ -486,8 +486,6 @@ static int keystone_rproc_remove(struct platform_device *pdev)
 	pm_runtime_disable(&pdev->dev);
 	rproc_free(ksproc->rproc);
 	of_reserved_mem_device_release(&pdev->dev);
-
-	return 0;
 }
 
 static const struct of_device_id keystone_rproc_of_match[] = {
@@ -501,7 +499,7 @@ MODULE_DEVICE_TABLE(of, keystone_rproc_of_match);
 
 static struct platform_driver keystone_rproc_driver = {
 	.probe	= keystone_rproc_probe,
-	.remove	= keystone_rproc_remove,
+	.remove_new = keystone_rproc_remove,
 	.driver	= {
 		.name = "keystone-rproc",
 		.of_match_table = keystone_rproc_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 05/18] remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
  (?)
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Neil Armstrong, Kevin Hilman
  Cc: Jerome Brunet, Martin Blumenstingl, linux-remoteproc,
	linux-arm-kernel, linux-amlogic, kernel

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 this driver 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/remoteproc/meson_mx_ao_arc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/meson_mx_ao_arc.c b/drivers/remoteproc/meson_mx_ao_arc.c
index 462cddab6518..f6744b538323 100644
--- a/drivers/remoteproc/meson_mx_ao_arc.c
+++ b/drivers/remoteproc/meson_mx_ao_arc.c
@@ -228,15 +228,13 @@ static int meson_mx_ao_arc_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
+static void meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct meson_mx_ao_arc_rproc_priv *priv = rproc->priv;
 
 	rproc_del(rproc);
 	gen_pool_free(priv->sram_pool, priv->sram_va, priv->sram_size);
-
-	return 0;
 }
 
 static const struct of_device_id meson_mx_ao_arc_rproc_match[] = {
@@ -248,7 +246,7 @@ MODULE_DEVICE_TABLE(of, meson_mx_ao_arc_rproc_match);
 
 static struct platform_driver meson_mx_ao_arc_rproc_driver = {
 	.probe = meson_mx_ao_arc_rproc_probe,
-	.remove = meson_mx_ao_arc_rproc_remove,
+	.remove_new = meson_mx_ao_arc_rproc_remove,
 	.driver = {
 		.name = "meson-mx-ao-arc-rproc",
 		.of_match_table = meson_mx_ao_arc_rproc_match,
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 05/18] remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Neil Armstrong, Kevin Hilman
  Cc: Jerome Brunet, Martin Blumenstingl, linux-remoteproc,
	linux-arm-kernel, linux-amlogic, kernel

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 this driver 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/remoteproc/meson_mx_ao_arc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/meson_mx_ao_arc.c b/drivers/remoteproc/meson_mx_ao_arc.c
index 462cddab6518..f6744b538323 100644
--- a/drivers/remoteproc/meson_mx_ao_arc.c
+++ b/drivers/remoteproc/meson_mx_ao_arc.c
@@ -228,15 +228,13 @@ static int meson_mx_ao_arc_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
+static void meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct meson_mx_ao_arc_rproc_priv *priv = rproc->priv;
 
 	rproc_del(rproc);
 	gen_pool_free(priv->sram_pool, priv->sram_va, priv->sram_size);
-
-	return 0;
 }
 
 static const struct of_device_id meson_mx_ao_arc_rproc_match[] = {
@@ -248,7 +246,7 @@ MODULE_DEVICE_TABLE(of, meson_mx_ao_arc_rproc_match);
 
 static struct platform_driver meson_mx_ao_arc_rproc_driver = {
 	.probe = meson_mx_ao_arc_rproc_probe,
-	.remove = meson_mx_ao_arc_rproc_remove,
+	.remove_new = meson_mx_ao_arc_rproc_remove,
 	.driver = {
 		.name = "meson-mx-ao-arc-rproc",
 		.of_match_table = meson_mx_ao_arc_rproc_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 05/18] remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Neil Armstrong, Kevin Hilman
  Cc: Jerome Brunet, Martin Blumenstingl, linux-remoteproc,
	linux-arm-kernel, linux-amlogic, kernel

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 this driver 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/remoteproc/meson_mx_ao_arc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/meson_mx_ao_arc.c b/drivers/remoteproc/meson_mx_ao_arc.c
index 462cddab6518..f6744b538323 100644
--- a/drivers/remoteproc/meson_mx_ao_arc.c
+++ b/drivers/remoteproc/meson_mx_ao_arc.c
@@ -228,15 +228,13 @@ static int meson_mx_ao_arc_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
+static void meson_mx_ao_arc_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct meson_mx_ao_arc_rproc_priv *priv = rproc->priv;
 
 	rproc_del(rproc);
 	gen_pool_free(priv->sram_pool, priv->sram_va, priv->sram_size);
-
-	return 0;
 }
 
 static const struct of_device_id meson_mx_ao_arc_rproc_match[] = {
@@ -248,7 +246,7 @@ MODULE_DEVICE_TABLE(of, meson_mx_ao_arc_rproc_match);
 
 static struct platform_driver meson_mx_ao_arc_rproc_driver = {
 	.probe = meson_mx_ao_arc_rproc_probe,
-	.remove = meson_mx_ao_arc_rproc_remove,
+	.remove_new = meson_mx_ao_arc_rproc_remove,
 	.driver = {
 		.name = "meson-mx-ao-arc-rproc",
 		.of_match_table = meson_mx_ao_arc_rproc_match,
-- 
2.39.2


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Matthias Brugger
  Cc: AngeloGioacchino Del Regno, linux-remoteproc, kernel,
	linux-arm-kernel, linux-mediatek

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 this driver 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/remoteproc/mtk_scp.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
index e1d93e63d7df..dcc94ee2458d 100644
--- a/drivers/remoteproc/mtk_scp.c
+++ b/drivers/remoteproc/mtk_scp.c
@@ -913,7 +913,7 @@ static int scp_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int scp_remove(struct platform_device *pdev)
+static void scp_remove(struct platform_device *pdev)
 {
 	struct mtk_scp *scp = platform_get_drvdata(pdev);
 	int i;
@@ -925,8 +925,6 @@ static int scp_remove(struct platform_device *pdev)
 	for (i = 0; i < SCP_IPI_MAX; i++)
 		mutex_destroy(&scp->ipi_desc[i].lock);
 	mutex_destroy(&scp->send_lock);
-
-	return 0;
 }
 
 static const struct mtk_scp_of_data mt8183_of_data = {
@@ -1003,7 +1001,7 @@ MODULE_DEVICE_TABLE(of, mtk_scp_of_match);
 
 static struct platform_driver mtk_scp_driver = {
 	.probe = scp_probe,
-	.remove = scp_remove,
+	.remove_new = scp_remove,
 	.driver = {
 		.name = "mtk-scp",
 		.of_match_table = mtk_scp_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Matthias Brugger
  Cc: AngeloGioacchino Del Regno, linux-remoteproc, kernel,
	linux-arm-kernel, linux-mediatek

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 this driver 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/remoteproc/mtk_scp.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
index e1d93e63d7df..dcc94ee2458d 100644
--- a/drivers/remoteproc/mtk_scp.c
+++ b/drivers/remoteproc/mtk_scp.c
@@ -913,7 +913,7 @@ static int scp_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int scp_remove(struct platform_device *pdev)
+static void scp_remove(struct platform_device *pdev)
 {
 	struct mtk_scp *scp = platform_get_drvdata(pdev);
 	int i;
@@ -925,8 +925,6 @@ static int scp_remove(struct platform_device *pdev)
 	for (i = 0; i < SCP_IPI_MAX; i++)
 		mutex_destroy(&scp->ipi_desc[i].lock);
 	mutex_destroy(&scp->send_lock);
-
-	return 0;
 }
 
 static const struct mtk_scp_of_data mt8183_of_data = {
@@ -1003,7 +1001,7 @@ MODULE_DEVICE_TABLE(of, mtk_scp_of_match);
 
 static struct platform_driver mtk_scp_driver = {
 	.probe = scp_probe,
-	.remove = scp_remove,
+	.remove_new = scp_remove,
 	.driver = {
 		.name = "mtk-scp",
 		.of_match_table = mtk_scp_of_match,
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 07/18] remoteproc: omap: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (7 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/omap_remoteproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c
index 430fab0266ed..82ed90f03d91 100644
--- a/drivers/remoteproc/omap_remoteproc.c
+++ b/drivers/remoteproc/omap_remoteproc.c
@@ -1363,15 +1363,13 @@ static int omap_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int omap_rproc_remove(struct platform_device *pdev)
+static void omap_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 
 	rproc_del(rproc);
 	rproc_free(rproc);
 	of_reserved_mem_device_release(&pdev->dev);
-
-	return 0;
 }
 
 static const struct dev_pm_ops omap_rproc_pm_ops = {
@@ -1382,7 +1380,7 @@ static const struct dev_pm_ops omap_rproc_pm_ops = {
 
 static struct platform_driver omap_rproc_driver = {
 	.probe = omap_rproc_probe,
-	.remove = omap_rproc_remove,
+	.remove_new = omap_rproc_remove,
 	.driver = {
 		.name = "omap-rproc",
 		.pm = &omap_rproc_pm_ops,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 08/18] remoteproc: pru: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (8 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/pru_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/pru_rproc.c b/drivers/remoteproc/pru_rproc.c
index 095f66130f48..f7ac9b6b80ed 100644
--- a/drivers/remoteproc/pru_rproc.c
+++ b/drivers/remoteproc/pru_rproc.c
@@ -1071,14 +1071,12 @@ static int pru_rproc_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int pru_rproc_remove(struct platform_device *pdev)
+static void pru_rproc_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 	struct rproc *rproc = platform_get_drvdata(pdev);
 
 	dev_dbg(dev, "%s: removing rproc %s\n", __func__, rproc->name);
-
-	return 0;
 }
 
 static const struct pru_private_data pru_data = {
@@ -1126,7 +1124,7 @@ static struct platform_driver pru_rproc_driver = {
 		.suppress_bind_attrs = true,
 	},
 	.probe  = pru_rproc_probe,
-	.remove = pru_rproc_remove,
+	.remove_new = pru_rproc_remove,
 };
 module_platform_driver(pru_rproc_driver);
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 09/18] remoteproc: qcom_q6v5_adsp: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (9 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  2023-05-05  3:00   ` Caleb Connolly
  -1 siblings, 1 reply; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel

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 this driver 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/remoteproc/qcom_q6v5_adsp.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index d546ab9dc141..6777a3bd6226 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -763,7 +763,7 @@ static int adsp_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int adsp_remove(struct platform_device *pdev)
+static void adsp_remove(struct platform_device *pdev)
 {
 	struct qcom_adsp *adsp = platform_get_drvdata(pdev);
 
@@ -775,8 +775,6 @@ static int adsp_remove(struct platform_device *pdev)
 	qcom_remove_ssr_subdev(adsp->rproc, &adsp->ssr_subdev);
 	qcom_rproc_pds_detach(adsp, adsp->proxy_pds, adsp->proxy_pd_count);
 	rproc_free(adsp->rproc);
-
-	return 0;
 }
 
 static const struct adsp_pil_data adsp_resource_init = {
@@ -859,7 +857,7 @@ MODULE_DEVICE_TABLE(of, adsp_of_match);
 
 static struct platform_driver adsp_pil_driver = {
 	.probe = adsp_probe,
-	.remove = adsp_remove,
+	.remove_new = adsp_remove,
 	.driver = {
 		.name = "qcom_q6v5_adsp",
 		.of_match_table = adsp_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 10/18] remoteproc: qcom_q6v5_mss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (10 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  2023-05-05  3:00   ` Caleb Connolly
  -1 siblings, 1 reply; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel

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 this driver 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/remoteproc/qcom_q6v5_mss.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 8e15e4f85de1..70bffc9f33f6 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -2110,7 +2110,7 @@ static int q6v5_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int q6v5_remove(struct platform_device *pdev)
+static void q6v5_remove(struct platform_device *pdev)
 {
 	struct q6v5 *qproc = platform_get_drvdata(pdev);
 	struct rproc *rproc = qproc->rproc;
@@ -2128,8 +2128,6 @@ static int q6v5_remove(struct platform_device *pdev)
 	q6v5_pds_detach(qproc, qproc->proxy_pds, qproc->proxy_pd_count);
 
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static const struct rproc_hexagon_res sc7180_mss = {
@@ -2482,7 +2480,7 @@ MODULE_DEVICE_TABLE(of, q6v5_of_match);
 
 static struct platform_driver q6v5_driver = {
 	.probe = q6v5_probe,
-	.remove = q6v5_remove,
+	.remove_new = q6v5_remove,
 	.driver = {
 		.name = "qcom-q6v5-mss",
 		.of_match_table = q6v5_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 11/18] remoteproc: qcom_q6v5_pas: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (11 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  2023-05-05  3:01   ` Caleb Connolly
  -1 siblings, 1 reply; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel

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 this driver 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/remoteproc/qcom_q6v5_pas.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index e34d82b18a67..ca0155f41dac 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -754,7 +754,7 @@ static int adsp_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int adsp_remove(struct platform_device *pdev)
+static void adsp_remove(struct platform_device *pdev)
 {
 	struct qcom_adsp *adsp = platform_get_drvdata(pdev);
 
@@ -769,8 +769,6 @@ static int adsp_remove(struct platform_device *pdev)
 	adsp_pds_detach(adsp, adsp->proxy_pds, adsp->proxy_pd_count);
 	device_init_wakeup(adsp->dev, false);
 	rproc_free(adsp->rproc);
-
-	return 0;
 }
 
 static const struct adsp_data adsp_resource_init = {
@@ -1232,7 +1230,7 @@ MODULE_DEVICE_TABLE(of, adsp_of_match);
 
 static struct platform_driver adsp_driver = {
 	.probe = adsp_probe,
-	.remove = adsp_remove,
+	.remove_new = adsp_remove,
 	.driver = {
 		.name = "qcom_q6v5_pas",
 		.of_match_table = adsp_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 12/18] remoteproc: qcom_q6v5_wcss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (12 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  2023-05-05  3:01   ` Caleb Connolly
  -1 siblings, 1 reply; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel

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 this driver 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/remoteproc/qcom_q6v5_wcss.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c
index ba24d745b2d6..b437044aa126 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -1074,7 +1074,7 @@ static int q6v5_wcss_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int q6v5_wcss_remove(struct platform_device *pdev)
+static void q6v5_wcss_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct q6v5_wcss *wcss = rproc->priv;
@@ -1082,8 +1082,6 @@ static int q6v5_wcss_remove(struct platform_device *pdev)
 	qcom_q6v5_deinit(&wcss->q6v5);
 	rproc_del(rproc);
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static const struct wcss_data wcss_ipq8074_res_init = {
@@ -1117,7 +1115,7 @@ MODULE_DEVICE_TABLE(of, q6v5_wcss_of_match);
 
 static struct platform_driver q6v5_wcss_driver = {
 	.probe = q6v5_wcss_probe,
-	.remove = q6v5_wcss_remove,
+	.remove_new = q6v5_wcss_remove,
 	.driver = {
 		.name = "qcom-q6v5-wcss-pil",
 		.of_match_table = q6v5_wcss_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 13/18] remoteproc: qcom_wcnss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (13 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  2023-05-05  3:01   ` Caleb Connolly
  -1 siblings, 1 reply; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel

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 this driver 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/remoteproc/qcom_wcnss.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
index 0fc317265064..1ed0647bc962 100644
--- a/drivers/remoteproc/qcom_wcnss.c
+++ b/drivers/remoteproc/qcom_wcnss.c
@@ -666,7 +666,7 @@ static int wcnss_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int wcnss_remove(struct platform_device *pdev)
+static void wcnss_remove(struct platform_device *pdev)
 {
 	struct qcom_wcnss *wcnss = platform_get_drvdata(pdev);
 
@@ -678,8 +678,6 @@ static int wcnss_remove(struct platform_device *pdev)
 	qcom_remove_smd_subdev(wcnss->rproc, &wcnss->smd_subdev);
 	wcnss_release_pds(wcnss);
 	rproc_free(wcnss->rproc);
-
-	return 0;
 }
 
 static const struct of_device_id wcnss_of_match[] = {
@@ -693,7 +691,7 @@ MODULE_DEVICE_TABLE(of, wcnss_of_match);
 
 static struct platform_driver wcnss_driver = {
 	.probe = wcnss_probe,
-	.remove = wcnss_remove,
+	.remove_new = wcnss_remove,
 	.driver = {
 		.name = "qcom-wcnss-pil",
 		.of_match_table = wcnss_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 14/18] remoteproc: rcar: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (14 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/rcar_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/rcar_rproc.c b/drivers/remoteproc/rcar_rproc.c
index 1ff2a73ade90..90e8769d5624 100644
--- a/drivers/remoteproc/rcar_rproc.c
+++ b/drivers/remoteproc/rcar_rproc.c
@@ -197,13 +197,11 @@ static int rcar_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int rcar_rproc_remove(struct platform_device *pdev)
+static void rcar_rproc_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 
 	pm_runtime_disable(dev);
-
-	return 0;
 }
 
 static const struct of_device_id rcar_rproc_of_match[] = {
@@ -215,7 +213,7 @@ MODULE_DEVICE_TABLE(of, rcar_rproc_of_match);
 
 static struct platform_driver rcar_rproc_driver = {
 	.probe = rcar_rproc_probe,
-	.remove = rcar_rproc_remove,
+	.remove_new = rcar_rproc_remove,
 	.driver = {
 		.name = "rcar-rproc",
 		.of_match_table = rcar_rproc_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 15/18] remoteproc: virtio: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (15 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/remoteproc_virtio.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c
index 0e95525c1158..83d76915a6ad 100644
--- a/drivers/remoteproc/remoteproc_virtio.c
+++ b/drivers/remoteproc/remoteproc_virtio.c
@@ -569,7 +569,7 @@ static int rproc_virtio_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int rproc_virtio_remove(struct platform_device *pdev)
+static void rproc_virtio_remove(struct platform_device *pdev)
 {
 	struct rproc_vdev *rvdev = dev_get_drvdata(&pdev->dev);
 	struct rproc *rproc = rvdev->rproc;
@@ -588,14 +588,12 @@ static int rproc_virtio_remove(struct platform_device *pdev)
 	dma_release_coherent_memory(&pdev->dev);
 
 	put_device(&rproc->dev);
-
-	return 0;
 }
 
 /* Platform driver */
 static struct platform_driver rproc_virtio_driver = {
 	.probe		= rproc_virtio_probe,
-	.remove		= rproc_virtio_remove,
+	.remove_new	= rproc_virtio_remove,
 	.driver		= {
 		.name	= "rproc-virtio",
 	},
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 16/18] remoteproc: st: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Patrice Chotard, Bjorn Andersson, Mathieu Poirier
  Cc: linux-arm-kernel, linux-remoteproc, kernel

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 this driver 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/remoteproc/st_remoteproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c
index 3f1b8963639f..e3ce01d98b4c 100644
--- a/drivers/remoteproc/st_remoteproc.c
+++ b/drivers/remoteproc/st_remoteproc.c
@@ -448,7 +448,7 @@ static int st_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int st_rproc_remove(struct platform_device *pdev)
+static void st_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct st_rproc *ddata = rproc->priv;
@@ -462,13 +462,11 @@ static int st_rproc_remove(struct platform_device *pdev)
 		mbox_free_channel(ddata->mbox_chan[i]);
 
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static struct platform_driver st_rproc_driver = {
 	.probe = st_rproc_probe,
-	.remove = st_rproc_remove,
+	.remove_new = st_rproc_remove,
 	.driver = {
 		.name = "st-rproc",
 		.of_match_table = of_match_ptr(st_rproc_match),
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 16/18] remoteproc: st: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Patrice Chotard, Bjorn Andersson, Mathieu Poirier
  Cc: linux-arm-kernel, linux-remoteproc, kernel

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 this driver 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/remoteproc/st_remoteproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c
index 3f1b8963639f..e3ce01d98b4c 100644
--- a/drivers/remoteproc/st_remoteproc.c
+++ b/drivers/remoteproc/st_remoteproc.c
@@ -448,7 +448,7 @@ static int st_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int st_rproc_remove(struct platform_device *pdev)
+static void st_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct st_rproc *ddata = rproc->priv;
@@ -462,13 +462,11 @@ static int st_rproc_remove(struct platform_device *pdev)
 		mbox_free_channel(ddata->mbox_chan[i]);
 
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static struct platform_driver st_rproc_driver = {
 	.probe = st_rproc_probe,
-	.remove = st_rproc_remove,
+	.remove_new = st_rproc_remove,
 	.driver = {
 		.name = "st-rproc",
 		.of_match_table = of_match_ptr(st_rproc_match),
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 17/18] remoteproc: stm32: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-04 19:44   ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, linux-stm32, linux-arm-kernel, kernel

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 this driver 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/remoteproc/stm32_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
index 8746cbb1f168..19716ec82aae 100644
--- a/drivers/remoteproc/stm32_rproc.c
+++ b/drivers/remoteproc/stm32_rproc.c
@@ -867,7 +867,7 @@ static int stm32_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int stm32_rproc_remove(struct platform_device *pdev)
+static void stm32_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct stm32_rproc *ddata = rproc->priv;
@@ -885,8 +885,6 @@ static int stm32_rproc_remove(struct platform_device *pdev)
 		device_init_wakeup(dev, false);
 	}
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static int __maybe_unused stm32_rproc_suspend(struct device *dev)
@@ -916,7 +914,7 @@ static SIMPLE_DEV_PM_OPS(stm32_rproc_pm_ops,
 
 static struct platform_driver stm32_rproc_driver = {
 	.probe = stm32_rproc_probe,
-	.remove = stm32_rproc_remove,
+	.remove_new = stm32_rproc_remove,
 	.driver = {
 		.name = "stm32-rproc",
 		.pm = &stm32_rproc_pm_ops,
-- 
2.39.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 17/18] remoteproc: stm32: Convert to platform remove callback returning void
@ 2023-05-04 19:44   ` Uwe Kleine-König
  0 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, linux-stm32, linux-arm-kernel, kernel

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 this driver 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/remoteproc/stm32_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
index 8746cbb1f168..19716ec82aae 100644
--- a/drivers/remoteproc/stm32_rproc.c
+++ b/drivers/remoteproc/stm32_rproc.c
@@ -867,7 +867,7 @@ static int stm32_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int stm32_rproc_remove(struct platform_device *pdev)
+static void stm32_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 	struct stm32_rproc *ddata = rproc->priv;
@@ -885,8 +885,6 @@ static int stm32_rproc_remove(struct platform_device *pdev)
 		device_init_wakeup(dev, false);
 	}
 	rproc_free(rproc);
-
-	return 0;
 }
 
 static int __maybe_unused stm32_rproc_suspend(struct device *dev)
@@ -916,7 +914,7 @@ static SIMPLE_DEV_PM_OPS(stm32_rproc_pm_ops,
 
 static struct platform_driver stm32_rproc_driver = {
 	.probe = stm32_rproc_probe,
-	.remove = stm32_rproc_remove,
+	.remove_new = stm32_rproc_remove,
 	.driver = {
 		.name = "stm32-rproc",
 		.pm = &stm32_rproc_pm_ops,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [PATCH 18/18] remoteproc: wkup_m3: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
                   ` (18 preceding siblings ...)
  (?)
@ 2023-05-04 19:44 ` Uwe Kleine-König
  -1 siblings, 0 replies; 47+ messages in thread
From: Uwe Kleine-König @ 2023-05-04 19:44 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier; +Cc: linux-remoteproc, kernel

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 this driver 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/remoteproc/wkup_m3_rproc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/wkup_m3_rproc.c b/drivers/remoteproc/wkup_m3_rproc.c
index a0c204cb0979..120dc7d2dac1 100644
--- a/drivers/remoteproc/wkup_m3_rproc.c
+++ b/drivers/remoteproc/wkup_m3_rproc.c
@@ -223,7 +223,7 @@ static int wkup_m3_rproc_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int wkup_m3_rproc_remove(struct platform_device *pdev)
+static void wkup_m3_rproc_remove(struct platform_device *pdev)
 {
 	struct rproc *rproc = platform_get_drvdata(pdev);
 
@@ -231,8 +231,6 @@ static int wkup_m3_rproc_remove(struct platform_device *pdev)
 	rproc_free(rproc);
 	pm_runtime_put_sync(&pdev->dev);
 	pm_runtime_disable(&pdev->dev);
-
-	return 0;
 }
 
 #ifdef CONFIG_PM
@@ -253,7 +251,7 @@ static const struct dev_pm_ops wkup_m3_rproc_pm_ops = {
 
 static struct platform_driver wkup_m3_rproc_driver = {
 	.probe = wkup_m3_rproc_probe,
-	.remove = wkup_m3_rproc_remove,
+	.remove_new = wkup_m3_rproc_remove,
 	.driver = {
 		.name = "wkup_m3_rproc",
 		.of_match_table = wkup_m3_rproc_of_match,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 47+ messages in thread

* Re: [PATCH 02/18] remoteproc: imx_dsp: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
@ 2023-05-04 21:33     ` Iuliana Prodan
  -1 siblings, 0 replies; 47+ messages in thread
From: Iuliana Prodan @ 2023-05-04 21:33 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

On 5/4/2023 10:44 PM, 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 this driver 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: Iuliana Prodan <iuliana.prodan@nxp.com>

> ---
>   drivers/remoteproc/imx_dsp_rproc.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
> index cab06dbf37fb..bda7f2a910e0 100644
> --- a/drivers/remoteproc/imx_dsp_rproc.c
> +++ b/drivers/remoteproc/imx_dsp_rproc.c
> @@ -1161,7 +1161,7 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int imx_dsp_rproc_remove(struct platform_device *pdev)
> +static void imx_dsp_rproc_remove(struct platform_device *pdev)
>   {
>   	struct rproc *rproc = platform_get_drvdata(pdev);
>   	struct imx_dsp_rproc *priv = rproc->priv;
> @@ -1170,8 +1170,6 @@ static int imx_dsp_rproc_remove(struct platform_device *pdev)
>   	rproc_del(rproc);
>   	imx_dsp_detach_pm_domains(priv);
>   	rproc_free(rproc);
> -
> -	return 0;
>   }
>   
>   /* pm runtime functions */
> @@ -1328,7 +1326,7 @@ MODULE_DEVICE_TABLE(of, imx_dsp_rproc_of_match);
>   
>   static struct platform_driver imx_dsp_rproc_driver = {
>   	.probe = imx_dsp_rproc_probe,
> -	.remove = imx_dsp_rproc_remove,
> +	.remove_new = imx_dsp_rproc_remove,
>   	.driver = {
>   		.name = "imx-dsp-rproc",
>   		.of_match_table = imx_dsp_rproc_of_match,

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 02/18] remoteproc: imx_dsp: Convert to platform remove callback returning void
@ 2023-05-04 21:33     ` Iuliana Prodan
  0 siblings, 0 replies; 47+ messages in thread
From: Iuliana Prodan @ 2023-05-04 21:33 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

On 5/4/2023 10:44 PM, 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 this driver 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: Iuliana Prodan <iuliana.prodan@nxp.com>

> ---
>   drivers/remoteproc/imx_dsp_rproc.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
> index cab06dbf37fb..bda7f2a910e0 100644
> --- a/drivers/remoteproc/imx_dsp_rproc.c
> +++ b/drivers/remoteproc/imx_dsp_rproc.c
> @@ -1161,7 +1161,7 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int imx_dsp_rproc_remove(struct platform_device *pdev)
> +static void imx_dsp_rproc_remove(struct platform_device *pdev)
>   {
>   	struct rproc *rproc = platform_get_drvdata(pdev);
>   	struct imx_dsp_rproc *priv = rproc->priv;
> @@ -1170,8 +1170,6 @@ static int imx_dsp_rproc_remove(struct platform_device *pdev)
>   	rproc_del(rproc);
>   	imx_dsp_detach_pm_domains(priv);
>   	rproc_free(rproc);
> -
> -	return 0;
>   }
>   
>   /* pm runtime functions */
> @@ -1328,7 +1326,7 @@ MODULE_DEVICE_TABLE(of, imx_dsp_rproc_of_match);
>   
>   static struct platform_driver imx_dsp_rproc_driver = {
>   	.probe = imx_dsp_rproc_probe,
> -	.remove = imx_dsp_rproc_remove,
> +	.remove_new = imx_dsp_rproc_remove,
>   	.driver = {
>   		.name = "imx-dsp-rproc",
>   		.of_match_table = imx_dsp_rproc_of_match,

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 03/18] remoteproc: imx: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
@ 2023-05-04 21:34     ` Iuliana Prodan
  -1 siblings, 0 replies; 47+ messages in thread
From: Iuliana Prodan @ 2023-05-04 21:34 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

On 5/4/2023 10:44 PM, 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 this driver 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: Iuliana Prodan <iuliana.prodan@nxp.com>


> ---
>   drivers/remoteproc/imx_rproc.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 0ab840dc7e97..f9874fc5a80f 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -1112,7 +1112,7 @@ static int imx_rproc_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int imx_rproc_remove(struct platform_device *pdev)
> +static void imx_rproc_remove(struct platform_device *pdev)
>   {
>   	struct rproc *rproc = platform_get_drvdata(pdev);
>   	struct imx_rproc *priv = rproc->priv;
> @@ -1123,8 +1123,6 @@ static int imx_rproc_remove(struct platform_device *pdev)
>   	imx_rproc_free_mbox(rproc);
>   	destroy_workqueue(priv->workqueue);
>   	rproc_free(rproc);
> -
> -	return 0;
>   }
>   
>   static const struct of_device_id imx_rproc_of_match[] = {
> @@ -1145,7 +1143,7 @@ MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
>   
>   static struct platform_driver imx_rproc_driver = {
>   	.probe = imx_rproc_probe,
> -	.remove = imx_rproc_remove,
> +	.remove_new = imx_rproc_remove,
>   	.driver = {
>   		.name = "imx-rproc",
>   		.of_match_table = imx_rproc_of_match,

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 03/18] remoteproc: imx: Convert to platform remove callback returning void
@ 2023-05-04 21:34     ` Iuliana Prodan
  0 siblings, 0 replies; 47+ messages in thread
From: Iuliana Prodan @ 2023-05-04 21:34 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Shawn Guo, Sascha Hauer
  Cc: Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	linux-remoteproc, linux-arm-kernel

On 5/4/2023 10:44 PM, 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 this driver 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: Iuliana Prodan <iuliana.prodan@nxp.com>


> ---
>   drivers/remoteproc/imx_rproc.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 0ab840dc7e97..f9874fc5a80f 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -1112,7 +1112,7 @@ static int imx_rproc_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int imx_rproc_remove(struct platform_device *pdev)
> +static void imx_rproc_remove(struct platform_device *pdev)
>   {
>   	struct rproc *rproc = platform_get_drvdata(pdev);
>   	struct imx_rproc *priv = rproc->priv;
> @@ -1123,8 +1123,6 @@ static int imx_rproc_remove(struct platform_device *pdev)
>   	imx_rproc_free_mbox(rproc);
>   	destroy_workqueue(priv->workqueue);
>   	rproc_free(rproc);
> -
> -	return 0;
>   }
>   
>   static const struct of_device_id imx_rproc_of_match[] = {
> @@ -1145,7 +1143,7 @@ MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
>   
>   static struct platform_driver imx_rproc_driver = {
>   	.probe = imx_rproc_probe,
> -	.remove = imx_rproc_remove,
> +	.remove_new = imx_rproc_remove,
>   	.driver = {
>   		.name = "imx-rproc",
>   		.of_match_table = imx_rproc_of_match,

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 09/18] remoteproc: qcom_q6v5_adsp: Convert to platform remove callback returning void
  2023-05-04 19:44 ` [PATCH 09/18] remoteproc: qcom_q6v5_adsp: " Uwe Kleine-König
@ 2023-05-05  3:00   ` Caleb Connolly
  0 siblings, 0 replies; 47+ messages in thread
From: Caleb Connolly @ 2023-05-05  3:00 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel



On 04/05/2023 20:44, 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 this driver 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: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  drivers/remoteproc/qcom_q6v5_adsp.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
> index d546ab9dc141..6777a3bd6226 100644
> --- a/drivers/remoteproc/qcom_q6v5_adsp.c
> +++ b/drivers/remoteproc/qcom_q6v5_adsp.c
> @@ -763,7 +763,7 @@ static int adsp_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int adsp_remove(struct platform_device *pdev)
> +static void adsp_remove(struct platform_device *pdev)
>  {
>  	struct qcom_adsp *adsp = platform_get_drvdata(pdev);
>  
> @@ -775,8 +775,6 @@ static int adsp_remove(struct platform_device *pdev)
>  	qcom_remove_ssr_subdev(adsp->rproc, &adsp->ssr_subdev);
>  	qcom_rproc_pds_detach(adsp, adsp->proxy_pds, adsp->proxy_pd_count);
>  	rproc_free(adsp->rproc);
> -
> -	return 0;
>  }
>  
>  static const struct adsp_pil_data adsp_resource_init = {
> @@ -859,7 +857,7 @@ MODULE_DEVICE_TABLE(of, adsp_of_match);
>  
>  static struct platform_driver adsp_pil_driver = {
>  	.probe = adsp_probe,
> -	.remove = adsp_remove,
> +	.remove_new = adsp_remove,
>  	.driver = {
>  		.name = "qcom_q6v5_adsp",
>  		.of_match_table = adsp_of_match,

-- 
Kind Regards,
Caleb (they/them)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 10/18] remoteproc: qcom_q6v5_mss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` [PATCH 10/18] remoteproc: qcom_q6v5_mss: " Uwe Kleine-König
@ 2023-05-05  3:00   ` Caleb Connolly
  0 siblings, 0 replies; 47+ messages in thread
From: Caleb Connolly @ 2023-05-05  3:00 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel



On 04/05/2023 20:44, 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 this driver 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: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  drivers/remoteproc/qcom_q6v5_mss.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
> index 8e15e4f85de1..70bffc9f33f6 100644
> --- a/drivers/remoteproc/qcom_q6v5_mss.c
> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> @@ -2110,7 +2110,7 @@ static int q6v5_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int q6v5_remove(struct platform_device *pdev)
> +static void q6v5_remove(struct platform_device *pdev)
>  {
>  	struct q6v5 *qproc = platform_get_drvdata(pdev);
>  	struct rproc *rproc = qproc->rproc;
> @@ -2128,8 +2128,6 @@ static int q6v5_remove(struct platform_device *pdev)
>  	q6v5_pds_detach(qproc, qproc->proxy_pds, qproc->proxy_pd_count);
>  
>  	rproc_free(rproc);
> -
> -	return 0;
>  }
>  
>  static const struct rproc_hexagon_res sc7180_mss = {
> @@ -2482,7 +2480,7 @@ MODULE_DEVICE_TABLE(of, q6v5_of_match);
>  
>  static struct platform_driver q6v5_driver = {
>  	.probe = q6v5_probe,
> -	.remove = q6v5_remove,
> +	.remove_new = q6v5_remove,
>  	.driver = {
>  		.name = "qcom-q6v5-mss",
>  		.of_match_table = q6v5_of_match,

-- 
Kind Regards,
Caleb (they/them)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 11/18] remoteproc: qcom_q6v5_pas: Convert to platform remove callback returning void
  2023-05-04 19:44 ` [PATCH 11/18] remoteproc: qcom_q6v5_pas: " Uwe Kleine-König
@ 2023-05-05  3:01   ` Caleb Connolly
  0 siblings, 0 replies; 47+ messages in thread
From: Caleb Connolly @ 2023-05-05  3:01 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel



On 04/05/2023 20:44, 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 this driver 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: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  drivers/remoteproc/qcom_q6v5_pas.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index e34d82b18a67..ca0155f41dac 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> @@ -754,7 +754,7 @@ static int adsp_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int adsp_remove(struct platform_device *pdev)
> +static void adsp_remove(struct platform_device *pdev)
>  {
>  	struct qcom_adsp *adsp = platform_get_drvdata(pdev);
>  
> @@ -769,8 +769,6 @@ static int adsp_remove(struct platform_device *pdev)
>  	adsp_pds_detach(adsp, adsp->proxy_pds, adsp->proxy_pd_count);
>  	device_init_wakeup(adsp->dev, false);
>  	rproc_free(adsp->rproc);
> -
> -	return 0;
>  }
>  
>  static const struct adsp_data adsp_resource_init = {
> @@ -1232,7 +1230,7 @@ MODULE_DEVICE_TABLE(of, adsp_of_match);
>  
>  static struct platform_driver adsp_driver = {
>  	.probe = adsp_probe,
> -	.remove = adsp_remove,
> +	.remove_new = adsp_remove,
>  	.driver = {
>  		.name = "qcom_q6v5_pas",
>  		.of_match_table = adsp_of_match,

-- 
Kind Regards,
Caleb (they/them)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 12/18] remoteproc: qcom_q6v5_wcss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` [PATCH 12/18] remoteproc: qcom_q6v5_wcss: " Uwe Kleine-König
@ 2023-05-05  3:01   ` Caleb Connolly
  0 siblings, 0 replies; 47+ messages in thread
From: Caleb Connolly @ 2023-05-05  3:01 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel



On 04/05/2023 20:44, 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 this driver 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: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  drivers/remoteproc/qcom_q6v5_wcss.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c
> index ba24d745b2d6..b437044aa126 100644
> --- a/drivers/remoteproc/qcom_q6v5_wcss.c
> +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
> @@ -1074,7 +1074,7 @@ static int q6v5_wcss_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int q6v5_wcss_remove(struct platform_device *pdev)
> +static void q6v5_wcss_remove(struct platform_device *pdev)
>  {
>  	struct rproc *rproc = platform_get_drvdata(pdev);
>  	struct q6v5_wcss *wcss = rproc->priv;
> @@ -1082,8 +1082,6 @@ static int q6v5_wcss_remove(struct platform_device *pdev)
>  	qcom_q6v5_deinit(&wcss->q6v5);
>  	rproc_del(rproc);
>  	rproc_free(rproc);
> -
> -	return 0;
>  }
>  
>  static const struct wcss_data wcss_ipq8074_res_init = {
> @@ -1117,7 +1115,7 @@ MODULE_DEVICE_TABLE(of, q6v5_wcss_of_match);
>  
>  static struct platform_driver q6v5_wcss_driver = {
>  	.probe = q6v5_wcss_probe,
> -	.remove = q6v5_wcss_remove,
> +	.remove_new = q6v5_wcss_remove,
>  	.driver = {
>  		.name = "qcom-q6v5-wcss-pil",
>  		.of_match_table = q6v5_wcss_of_match,

-- 
Kind Regards,
Caleb (they/them)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 13/18] remoteproc: qcom_wcnss: Convert to platform remove callback returning void
  2023-05-04 19:44 ` [PATCH 13/18] remoteproc: qcom_wcnss: " Uwe Kleine-König
@ 2023-05-05  3:01   ` Caleb Connolly
  0 siblings, 0 replies; 47+ messages in thread
From: Caleb Connolly @ 2023-05-05  3:01 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Gross, Bjorn Andersson, Mathieu Poirier
  Cc: Konrad Dybcio, linux-arm-msm, linux-remoteproc, kernel



On 04/05/2023 20:44, 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 this driver 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: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  drivers/remoteproc/qcom_wcnss.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
> index 0fc317265064..1ed0647bc962 100644
> --- a/drivers/remoteproc/qcom_wcnss.c
> +++ b/drivers/remoteproc/qcom_wcnss.c
> @@ -666,7 +666,7 @@ static int wcnss_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int wcnss_remove(struct platform_device *pdev)
> +static void wcnss_remove(struct platform_device *pdev)
>  {
>  	struct qcom_wcnss *wcnss = platform_get_drvdata(pdev);
>  
> @@ -678,8 +678,6 @@ static int wcnss_remove(struct platform_device *pdev)
>  	qcom_remove_smd_subdev(wcnss->rproc, &wcnss->smd_subdev);
>  	wcnss_release_pds(wcnss);
>  	rproc_free(wcnss->rproc);
> -
> -	return 0;
>  }
>  
>  static const struct of_device_id wcnss_of_match[] = {
> @@ -693,7 +691,7 @@ MODULE_DEVICE_TABLE(of, wcnss_of_match);
>  
>  static struct platform_driver wcnss_driver = {
>  	.probe = wcnss_probe,
> -	.remove = wcnss_remove,
> +	.remove_new = wcnss_remove,
>  	.driver = {
>  		.name = "qcom-wcnss-pil",
>  		.of_match_table = wcnss_of_match,

-- 
Kind Regards,
Caleb (they/them)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
@ 2023-05-05  8:58     ` AngeloGioacchino Del Regno
  -1 siblings, 0 replies; 47+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-05-05  8:58 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Matthias Brugger
  Cc: linux-remoteproc, kernel, linux-arm-kernel, linux-mediatek

Il 04/05/23 21:44, Uwe Kleine-König ha scritto:
> 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 this driver 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: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
@ 2023-05-05  8:58     ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 47+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-05-05  8:58 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Matthias Brugger
  Cc: linux-remoteproc, kernel, linux-arm-kernel, linux-mediatek

Il 04/05/23 21:44, Uwe Kleine-König ha scritto:
> 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 this driver 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: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
@ 2023-05-05 17:13     ` Matthias Brugger
  -1 siblings, 0 replies; 47+ messages in thread
From: Matthias Brugger @ 2023-05-05 17:13 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier
  Cc: AngeloGioacchino Del Regno, linux-remoteproc, kernel,
	linux-arm-kernel, linux-mediatek



On 04/05/2023 21:44, 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 this driver 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: Matthias Brugger <matthias.bgg@gmail.com>

> ---
>   drivers/remoteproc/mtk_scp.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
> index e1d93e63d7df..dcc94ee2458d 100644
> --- a/drivers/remoteproc/mtk_scp.c
> +++ b/drivers/remoteproc/mtk_scp.c
> @@ -913,7 +913,7 @@ static int scp_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int scp_remove(struct platform_device *pdev)
> +static void scp_remove(struct platform_device *pdev)
>   {
>   	struct mtk_scp *scp = platform_get_drvdata(pdev);
>   	int i;
> @@ -925,8 +925,6 @@ static int scp_remove(struct platform_device *pdev)
>   	for (i = 0; i < SCP_IPI_MAX; i++)
>   		mutex_destroy(&scp->ipi_desc[i].lock);
>   	mutex_destroy(&scp->send_lock);
> -
> -	return 0;
>   }
>   
>   static const struct mtk_scp_of_data mt8183_of_data = {
> @@ -1003,7 +1001,7 @@ MODULE_DEVICE_TABLE(of, mtk_scp_of_match);
>   
>   static struct platform_driver mtk_scp_driver = {
>   	.probe = scp_probe,
> -	.remove = scp_remove,
> +	.remove_new = scp_remove,
>   	.driver = {
>   		.name = "mtk-scp",
>   		.of_match_table = mtk_scp_of_match,

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 06/18] remoteproc: mtk_scp: Convert to platform remove callback returning void
@ 2023-05-05 17:13     ` Matthias Brugger
  0 siblings, 0 replies; 47+ messages in thread
From: Matthias Brugger @ 2023-05-05 17:13 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier
  Cc: AngeloGioacchino Del Regno, linux-remoteproc, kernel,
	linux-arm-kernel, linux-mediatek



On 04/05/2023 21:44, 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 this driver 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: Matthias Brugger <matthias.bgg@gmail.com>

> ---
>   drivers/remoteproc/mtk_scp.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
> index e1d93e63d7df..dcc94ee2458d 100644
> --- a/drivers/remoteproc/mtk_scp.c
> +++ b/drivers/remoteproc/mtk_scp.c
> @@ -913,7 +913,7 @@ static int scp_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> -static int scp_remove(struct platform_device *pdev)
> +static void scp_remove(struct platform_device *pdev)
>   {
>   	struct mtk_scp *scp = platform_get_drvdata(pdev);
>   	int i;
> @@ -925,8 +925,6 @@ static int scp_remove(struct platform_device *pdev)
>   	for (i = 0; i < SCP_IPI_MAX; i++)
>   		mutex_destroy(&scp->ipi_desc[i].lock);
>   	mutex_destroy(&scp->send_lock);
> -
> -	return 0;
>   }
>   
>   static const struct mtk_scp_of_data mt8183_of_data = {
> @@ -1003,7 +1001,7 @@ MODULE_DEVICE_TABLE(of, mtk_scp_of_match);
>   
>   static struct platform_driver mtk_scp_driver = {
>   	.probe = scp_probe,
> -	.remove = scp_remove,
> +	.remove_new = scp_remove,
>   	.driver = {
>   		.name = "mtk-scp",
>   		.of_match_table = mtk_scp_of_match,

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 05/18] remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
@ 2023-05-08 19:39     ` Martin Blumenstingl
  -1 siblings, 0 replies; 47+ messages in thread
From: Martin Blumenstingl @ 2023-05-08 19:39 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Bjorn Andersson, Mathieu Poirier, Neil Armstrong, Kevin Hilman,
	Jerome Brunet, linux-remoteproc, linux-arm-kernel, linux-amlogic,
	kernel

On Thu, May 4, 2023 at 9:45 PM Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> 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 this driver 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: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 05/18] remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void
@ 2023-05-08 19:39     ` Martin Blumenstingl
  0 siblings, 0 replies; 47+ messages in thread
From: Martin Blumenstingl @ 2023-05-08 19:39 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Bjorn Andersson, Mathieu Poirier, Neil Armstrong, Kevin Hilman,
	Jerome Brunet, linux-remoteproc, linux-arm-kernel, linux-amlogic,
	kernel

On Thu, May 4, 2023 at 9:45 PM Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> 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 this driver 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: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 16/18] remoteproc: st: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
  (?)
@ 2023-05-09  6:28   ` Patrice CHOTARD
  -1 siblings, 0 replies; 47+ messages in thread
From: Patrice CHOTARD @ 2023-05-09  6:28 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier
  Cc: linux-arm-kernel, linux-remoteproc, kernel

Hi Uwe

On 5/4/23 21:44, 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 this driver 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/remoteproc/st_remoteproc.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c
> index 3f1b8963639f..e3ce01d98b4c 100644
> --- a/drivers/remoteproc/st_remoteproc.c
> +++ b/drivers/remoteproc/st_remoteproc.c
> @@ -448,7 +448,7 @@ static int st_rproc_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int st_rproc_remove(struct platform_device *pdev)
> +static void st_rproc_remove(struct platform_device *pdev)
>  {
>  	struct rproc *rproc = platform_get_drvdata(pdev);
>  	struct st_rproc *ddata = rproc->priv;
> @@ -462,13 +462,11 @@ static int st_rproc_remove(struct platform_device *pdev)
>  		mbox_free_channel(ddata->mbox_chan[i]);
>  
>  	rproc_free(rproc);
> -
> -	return 0;
>  }
>  
>  static struct platform_driver st_rproc_driver = {
>  	.probe = st_rproc_probe,
> -	.remove = st_rproc_remove,
> +	.remove_new = st_rproc_remove,
>  	.driver = {
>  		.name = "st-rproc",
>  		.of_match_table = of_match_ptr(st_rproc_match),

Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 17/18] remoteproc: stm32: Convert to platform remove callback returning void
  2023-05-04 19:44   ` Uwe Kleine-König
  (?)
@ 2023-05-09 17:11   ` Arnaud POULIQUEN
  -1 siblings, 0 replies; 47+ messages in thread
From: Arnaud POULIQUEN @ 2023-05-09 17:11 UTC (permalink / raw)
  To: Uwe Kleine-König, Bjorn Andersson, Mathieu Poirier,
	Maxime Coquelin, Alexandre Torgue
  Cc: linux-remoteproc, linux-stm32, linux-arm-kernel, kernel

Hi Uwe,

On 5/4/23 21:44, 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 this driver from always returning zero in the remove
> callback to the void returning variant.

Reviewed-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>

Thanks,
Arnaud

> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/remoteproc/stm32_rproc.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
> index 8746cbb1f168..19716ec82aae 100644
> --- a/drivers/remoteproc/stm32_rproc.c
> +++ b/drivers/remoteproc/stm32_rproc.c
> @@ -867,7 +867,7 @@ static int stm32_rproc_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int stm32_rproc_remove(struct platform_device *pdev)
> +static void stm32_rproc_remove(struct platform_device *pdev)
>  {
>  	struct rproc *rproc = platform_get_drvdata(pdev);
>  	struct stm32_rproc *ddata = rproc->priv;
> @@ -885,8 +885,6 @@ static int stm32_rproc_remove(struct platform_device *pdev)
>  		device_init_wakeup(dev, false);
>  	}
>  	rproc_free(rproc);
> -
> -	return 0;
>  }
>  
>  static int __maybe_unused stm32_rproc_suspend(struct device *dev)
> @@ -916,7 +914,7 @@ static SIMPLE_DEV_PM_OPS(stm32_rproc_pm_ops,
>  
>  static struct platform_driver stm32_rproc_driver = {
>  	.probe = stm32_rproc_probe,
> -	.remove = stm32_rproc_remove,
> +	.remove_new = stm32_rproc_remove,
>  	.driver = {
>  		.name = "stm32-rproc",
>  		.pm = &stm32_rproc_pm_ops,

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 00/18] remoteproc: Convert to platform remove callback returning void
  2023-05-04 19:44 ` Uwe Kleine-König
@ 2023-05-09 20:09   ` Mathieu Poirier
  -1 siblings, 0 replies; 47+ messages in thread
From: Mathieu Poirier @ 2023-05-09 20:09 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Bjorn Andersson, Shawn Guo, Sascha Hauer, Neil Armstrong,
	Kevin Hilman, Matthias Brugger, Andy Gross, Patrice Chotard,
	Maxime Coquelin, Alexandre Torgue, linux-remoteproc, kernel,
	Fabio Estevam, NXP Linux Team, linux-arm-kernel, Jerome Brunet,
	Martin Blumenstingl, linux-amlogic, AngeloGioacchino Del Regno,
	linux-mediatek, Konrad Dybcio, linux-arm-msm, linux-stm32

On Thu, May 04, 2023 at 09:44:35PM +0200, Uwe Kleine-König wrote:
> Hello,
> 
> this patch series adapts most platform drivers below drivers/remoteproc
> to use the .remove_new() callback. Compared to the traditional .remove()
> callback .remove_new() returns no value. This is a good thing because
> the driver core doesn't (and cannot) cope for errors during remove. The
> only effect of a non-zero return value in .remove() is that the driver
> core emits a warning. The device is removed anyhow and an early return
> from .remove() usually yields a resource leak. One driver suffering from
> this problem (s3c2410) is fixed by the first patch.
> 
> By changing the remove callback to return void driver authors cannot
> reasonably (but wrongly) assume any more that there happens some kind of
> cleanup later.
> 
> There is one driver (i.e. ti_k3_dsp_remoteproc.c) that might return an
> error code in .remove(). I didn't look in detail into this driver, but
> if that error happens, we have exactly the bad situation described
> above. (Note that kproc->mem and the register mapping goes away.)
> 
> Best regards
> Uwe
> 
> Uwe Kleine-König (18):
>   remoteproc: da8xx: Convert to platform remove callback returning void
>   remoteproc: imx_dsp: Convert to platform remove callback returning
>     void
>   remoteproc: imx: Convert to platform remove callback returning void
>   remoteproc: keystone: Convert to platform remove callback returning
>     void
>   remoteproc: meson_mx_ao_arc: Convert to platform remove callback
>     returning void
>   remoteproc: mtk_scp: Convert to platform remove callback returning
>     void
>   remoteproc: omap: Convert to platform remove callback returning void
>   remoteproc: pru: Convert to platform remove callback returning void
>   remoteproc: qcom_q6v5_adsp: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_mss: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_pas: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_wcss: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_wcnss: Convert to platform remove callback returning
>     void
>   remoteproc: rcar: Convert to platform remove callback returning void
>   remoteproc: virtio: Convert to platform remove callback returning void
>   remoteproc: st: Convert to platform remove callback returning void
>   remoteproc: stm32: Convert to platform remove callback returning void
>   remoteproc: wkup_m3: Convert to platform remove callback returning
>     void
> 
>  drivers/remoteproc/da8xx_remoteproc.c    | 6 ++----
>  drivers/remoteproc/imx_dsp_rproc.c       | 6 ++----
>  drivers/remoteproc/imx_rproc.c           | 6 ++----
>  drivers/remoteproc/keystone_remoteproc.c | 6 ++----
>  drivers/remoteproc/meson_mx_ao_arc.c     | 6 ++----
>  drivers/remoteproc/mtk_scp.c             | 6 ++----
>  drivers/remoteproc/omap_remoteproc.c     | 6 ++----
>  drivers/remoteproc/pru_rproc.c           | 6 ++----
>  drivers/remoteproc/qcom_q6v5_adsp.c      | 6 ++----
>  drivers/remoteproc/qcom_q6v5_mss.c       | 6 ++----
>  drivers/remoteproc/qcom_q6v5_pas.c       | 6 ++----
>  drivers/remoteproc/qcom_q6v5_wcss.c      | 6 ++----
>  drivers/remoteproc/qcom_wcnss.c          | 6 ++----
>  drivers/remoteproc/rcar_rproc.c          | 6 ++----
>  drivers/remoteproc/remoteproc_virtio.c   | 6 ++----
>  drivers/remoteproc/st_remoteproc.c       | 6 ++----
>  drivers/remoteproc/stm32_rproc.c         | 6 ++----
>  drivers/remoteproc/wkup_m3_rproc.c       | 6 ++----
>  18 files changed, 36 insertions(+), 72 deletions(-)
>

I have applied this set.

Thanks,
Mathieu

> 
> base-commit: 1a5304fecee523060f26e2778d9d8e33c0562df3
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [PATCH 00/18] remoteproc: Convert to platform remove callback returning void
@ 2023-05-09 20:09   ` Mathieu Poirier
  0 siblings, 0 replies; 47+ messages in thread
From: Mathieu Poirier @ 2023-05-09 20:09 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Bjorn Andersson, Shawn Guo, Sascha Hauer, Neil Armstrong,
	Kevin Hilman, Matthias Brugger, Andy Gross, Patrice Chotard,
	Maxime Coquelin, Alexandre Torgue, linux-remoteproc, kernel,
	Fabio Estevam, NXP Linux Team, linux-arm-kernel, Jerome Brunet,
	Martin Blumenstingl, linux-amlogic, AngeloGioacchino Del Regno,
	linux-mediatek, Konrad Dybcio, linux-arm-msm, linux-stm32

On Thu, May 04, 2023 at 09:44:35PM +0200, Uwe Kleine-König wrote:
> Hello,
> 
> this patch series adapts most platform drivers below drivers/remoteproc
> to use the .remove_new() callback. Compared to the traditional .remove()
> callback .remove_new() returns no value. This is a good thing because
> the driver core doesn't (and cannot) cope for errors during remove. The
> only effect of a non-zero return value in .remove() is that the driver
> core emits a warning. The device is removed anyhow and an early return
> from .remove() usually yields a resource leak. One driver suffering from
> this problem (s3c2410) is fixed by the first patch.
> 
> By changing the remove callback to return void driver authors cannot
> reasonably (but wrongly) assume any more that there happens some kind of
> cleanup later.
> 
> There is one driver (i.e. ti_k3_dsp_remoteproc.c) that might return an
> error code in .remove(). I didn't look in detail into this driver, but
> if that error happens, we have exactly the bad situation described
> above. (Note that kproc->mem and the register mapping goes away.)
> 
> Best regards
> Uwe
> 
> Uwe Kleine-König (18):
>   remoteproc: da8xx: Convert to platform remove callback returning void
>   remoteproc: imx_dsp: Convert to platform remove callback returning
>     void
>   remoteproc: imx: Convert to platform remove callback returning void
>   remoteproc: keystone: Convert to platform remove callback returning
>     void
>   remoteproc: meson_mx_ao_arc: Convert to platform remove callback
>     returning void
>   remoteproc: mtk_scp: Convert to platform remove callback returning
>     void
>   remoteproc: omap: Convert to platform remove callback returning void
>   remoteproc: pru: Convert to platform remove callback returning void
>   remoteproc: qcom_q6v5_adsp: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_mss: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_pas: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_q6v5_wcss: Convert to platform remove callback
>     returning void
>   remoteproc: qcom_wcnss: Convert to platform remove callback returning
>     void
>   remoteproc: rcar: Convert to platform remove callback returning void
>   remoteproc: virtio: Convert to platform remove callback returning void
>   remoteproc: st: Convert to platform remove callback returning void
>   remoteproc: stm32: Convert to platform remove callback returning void
>   remoteproc: wkup_m3: Convert to platform remove callback returning
>     void
> 
>  drivers/remoteproc/da8xx_remoteproc.c    | 6 ++----
>  drivers/remoteproc/imx_dsp_rproc.c       | 6 ++----
>  drivers/remoteproc/imx_rproc.c           | 6 ++----
>  drivers/remoteproc/keystone_remoteproc.c | 6 ++----
>  drivers/remoteproc/meson_mx_ao_arc.c     | 6 ++----
>  drivers/remoteproc/mtk_scp.c             | 6 ++----
>  drivers/remoteproc/omap_remoteproc.c     | 6 ++----
>  drivers/remoteproc/pru_rproc.c           | 6 ++----
>  drivers/remoteproc/qcom_q6v5_adsp.c      | 6 ++----
>  drivers/remoteproc/qcom_q6v5_mss.c       | 6 ++----
>  drivers/remoteproc/qcom_q6v5_pas.c       | 6 ++----
>  drivers/remoteproc/qcom_q6v5_wcss.c      | 6 ++----
>  drivers/remoteproc/qcom_wcnss.c          | 6 ++----
>  drivers/remoteproc/rcar_rproc.c          | 6 ++----
>  drivers/remoteproc/remoteproc_virtio.c   | 6 ++----
>  drivers/remoteproc/st_remoteproc.c       | 6 ++----
>  drivers/remoteproc/stm32_rproc.c         | 6 ++----
>  drivers/remoteproc/wkup_m3_rproc.c       | 6 ++----
>  18 files changed, 36 insertions(+), 72 deletions(-)
>

I have applied this set.

Thanks,
Mathieu

> 
> base-commit: 1a5304fecee523060f26e2778d9d8e33c0562df3
> -- 
> 2.39.2
> 

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2023-05-09 20:09 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-04 19:44 [PATCH 00/18] remoteproc: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-04 19:44 ` Uwe Kleine-König
2023-05-04 19:44 ` Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 01/18] remoteproc: da8xx: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 02/18] remoteproc: imx_dsp: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-04 21:33   ` Iuliana Prodan
2023-05-04 21:33     ` Iuliana Prodan
2023-05-04 19:44 ` [PATCH 03/18] remoteproc: imx: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-04 21:34   ` Iuliana Prodan
2023-05-04 21:34     ` Iuliana Prodan
2023-05-04 19:44 ` [PATCH 04/18] remoteproc: keystone: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 05/18] remoteproc: meson_mx_ao_arc: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-08 19:39   ` Martin Blumenstingl
2023-05-08 19:39     ` Martin Blumenstingl
2023-05-04 19:44 ` [PATCH 06/18] remoteproc: mtk_scp: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-05  8:58   ` AngeloGioacchino Del Regno
2023-05-05  8:58     ` AngeloGioacchino Del Regno
2023-05-05 17:13   ` Matthias Brugger
2023-05-05 17:13     ` Matthias Brugger
2023-05-04 19:44 ` [PATCH 07/18] remoteproc: omap: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 08/18] remoteproc: pru: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 09/18] remoteproc: qcom_q6v5_adsp: " Uwe Kleine-König
2023-05-05  3:00   ` Caleb Connolly
2023-05-04 19:44 ` [PATCH 10/18] remoteproc: qcom_q6v5_mss: " Uwe Kleine-König
2023-05-05  3:00   ` Caleb Connolly
2023-05-04 19:44 ` [PATCH 11/18] remoteproc: qcom_q6v5_pas: " Uwe Kleine-König
2023-05-05  3:01   ` Caleb Connolly
2023-05-04 19:44 ` [PATCH 12/18] remoteproc: qcom_q6v5_wcss: " Uwe Kleine-König
2023-05-05  3:01   ` Caleb Connolly
2023-05-04 19:44 ` [PATCH 13/18] remoteproc: qcom_wcnss: " Uwe Kleine-König
2023-05-05  3:01   ` Caleb Connolly
2023-05-04 19:44 ` [PATCH 14/18] remoteproc: rcar: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 15/18] remoteproc: virtio: " Uwe Kleine-König
2023-05-04 19:44 ` [PATCH 16/18] remoteproc: st: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-09  6:28   ` Patrice CHOTARD
2023-05-04 19:44 ` [PATCH 17/18] remoteproc: stm32: " Uwe Kleine-König
2023-05-04 19:44   ` Uwe Kleine-König
2023-05-09 17:11   ` Arnaud POULIQUEN
2023-05-04 19:44 ` [PATCH 18/18] remoteproc: wkup_m3: " Uwe Kleine-König
2023-05-09 20:09 ` [PATCH 00/18] remoteproc: " Mathieu Poirier
2023-05-09 20:09   ` Mathieu Poirier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.