2024-04-10 13:59:10

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH 0/2] HSI: Convert to platform remove callback returning void

Hello,

this series converts all platform drivers below drivers/hsi/ to not use
struct platform_device::remove() any more. See commit 5c5a7680e67b
("platform: Provide a remove callback that returns no value") for an
extended explanation and the eventual goal.

All conversations are trivial, because the driver's .remove() callbacks
returned zero unconditionally.

There are no interdependencies between these patches, so they can be
applied independently if needed. This is merge window material.

Best regards
Uwe


Uwe Kleine-König (2):
HSI: omap_ssi_core: Convert to platform remove callback returning void
HSI: omap_ssi_port: Convert to platform remove callback returning void

drivers/hsi/controllers/omap_ssi_core.c | 6 ++----
drivers/hsi/controllers/omap_ssi_port.c | 6 ++----
2 files changed, 4 insertions(+), 8 deletions(-)


base-commit: 6ebf211bb11dfc004a2ff73a9de5386fa309c430
--
2.43.0



2024-04-10 14:23:13

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH 1/2] HSI: omap_ssi_core: Convert to platform remove callback returning void

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 ignored (apart
from emitting a warning) 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. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <[email protected]>
---
drivers/hsi/controllers/omap_ssi_core.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/hsi/controllers/omap_ssi_core.c b/drivers/hsi/controllers/omap_ssi_core.c
index 6802efb4d6cd..3140990a6164 100644
--- a/drivers/hsi/controllers/omap_ssi_core.c
+++ b/drivers/hsi/controllers/omap_ssi_core.c
@@ -547,7 +547,7 @@ static int ssi_probe(struct platform_device *pd)
return err;
}

-static int ssi_remove(struct platform_device *pd)
+static void ssi_remove(struct platform_device *pd)
{
struct hsi_controller *ssi = platform_get_drvdata(pd);

@@ -561,8 +561,6 @@ static int ssi_remove(struct platform_device *pd)
platform_set_drvdata(pd, NULL);

pm_runtime_disable(&pd->dev);
-
- return 0;
}

#ifdef CONFIG_PM
@@ -618,7 +616,7 @@ MODULE_DEVICE_TABLE(of, omap_ssi_of_match);

static struct platform_driver ssi_pdriver = {
.probe = ssi_probe,
- .remove = ssi_remove,
+ .remove_new = ssi_remove,
.driver = {
.name = "omap_ssi",
.pm = DEV_PM_OPS,
--
2.43.0