* [PATCH 00/24] staging: Convert to platform remove callback returning void
@ 2023-04-03 15:39 Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 18/24] staging: nvec: " Uwe Kleine-König
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-04-03 15:39 UTC (permalink / raw)
To: Greg Kroah-Hartman, Deepak R Varma, Yuan Can, Simon Horman,
Sven Van Asbroeck, Vaibhav Hiremath, Johan Hovold, Alex Elder,
Eugen Hristev, Mauro Carvalho Chehab, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Steve Longerbeam,
Philipp Zabel, Shawn Guo, Sascha Hauer, Neil Armstrong,
Kevin Hilman, Laurent Pinchart, Ezequiel Garcia, Maxime Ripard,
Paul Kocialkowski, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Parthiban Veerasooran, Christian Gromm, Davidlohr Bueso,
Marc Dietrich, Florian Fainelli, Ray Jui, Scott Branden,
Umang Jain, Andy Shevchenko, Adrien Thierry, Stefan Wahren,
Fabio M. De Francesco, Phil Elwell, Jakob Koschel
Cc: linux-staging, kernel, greybus-dev, linux-media, linux-arm-kernel,
Fabio Estevam, NXP Linux Team, Jerome Brunet, Martin Blumenstingl,
linux-amlogic, linux-rockchip, linux-sunxi, ac100, linux-tegra,
Broadcom internal kernel review list, linux-rpi-kernel
Hello,
this series adapts the platform drivers below drivers/staging 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.
By changing the remove callback to return void driver authors cannot
reasonably assume any more that there is some kind of cleanup later.
All drivers in staging already return zero in their remove callback, so
they can be trivially converted.
The changes to the individual drivers are all orthogonal. If I need to
resend some patches because of some review feedback, I'd like to only
send the patches that actually needed changes, so please pick up the
remaining patches that don't need changing to reduce the amount of mail.
Best regards
Uwe
Uwe Kleine-König (24):
staging: axis-fifo: Convert to platform remove callback returning void
staging: emxx_udc: Convert to platform remove callback returning void
staging: fieldbus: arcx-anybus: Convert to platform remove callback
returning void
staging: greybus: arche-apb-ctrl: Convert to platform remove callback
returning void
staging: greybus: arche: Convert to platform remove callback returning
void
staging: media: atmel-sama5d2-isc: Convert to platform remove callback
returning void
staging: media: atmel-sama7g5-isc: Convert to platform remove callback
returning void
staging: media: imx-media-csi: Convert to platform remove callback
returning void
staging: media: imx-media-dev: Convert to platform remove callback
returning void
staging: media: imx6-mipi-csi2: Convert to platform remove callback
returning void
staging: media: imx8mq-mipi-csi2: Convert to platform remove callback
returning void
staging: media: meson: vdec: Convert to platform remove callback
returning void
staging: media: omap4iss: Convert to platform remove callback
returning void
staging: media: rkvdec: Convert to platform remove callback returning
void
staging: media: sunxi: cedrus: Convert to platform remove callback
returning void
staging: media: sun6i-isp: Convert to platform remove callback
returning void
staging: most: dim2: Convert to platform remove callback returning
void
staging: nvec: Convert to platform remove callback returning void
staging: nvec: nvec_kbd: Convert to platform remove callback returning
void
staging: nvec_power: Convert to platform remove callback returning
void
staging: nvec_ps2: Convert to platform remove callback returning void
staging: octeon: ethernet: Convert to platform remove callback
returning void
staging: vc04_services: bcm2835-camera: Convert to platform remove
callback returning void
staging: vc04_services: vchiq_arm: Convert to platform remove callback
returning void
drivers/staging/axis-fifo/axis-fifo.c | 6 ++----
drivers/staging/emxx_udc/emxx_udc.c | 6 ++----
drivers/staging/fieldbus/anybuss/arcx-anybus.c | 5 ++---
drivers/staging/greybus/arche-apb-ctrl.c | 6 ++----
drivers/staging/greybus/arche-platform.c | 6 ++----
drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c | 6 ++----
drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c | 6 ++----
drivers/staging/media/imx/imx-media-csi.c | 6 ++----
drivers/staging/media/imx/imx-media-dev.c | 6 ++----
drivers/staging/media/imx/imx6-mipi-csi2.c | 6 ++----
drivers/staging/media/imx/imx8mq-mipi-csi2.c | 6 ++----
drivers/staging/media/meson/vdec/vdec.c | 6 ++----
drivers/staging/media/omap4iss/iss.c | 6 ++----
drivers/staging/media/rkvdec/rkvdec.c | 5 ++---
drivers/staging/media/sunxi/cedrus/cedrus.c | 6 ++----
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.c | 6 ++----
drivers/staging/most/dim2/dim2.c | 6 ++----
drivers/staging/nvec/nvec.c | 6 ++----
drivers/staging/nvec/nvec_kbd.c | 6 ++----
drivers/staging/nvec/nvec_power.c | 6 ++----
drivers/staging/nvec/nvec_ps2.c | 6 ++----
drivers/staging/octeon/ethernet.c | 5 ++---
.../staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 6 ++----
.../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 6 ++----
24 files changed, 48 insertions(+), 93 deletions(-)
base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
--
2.39.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 18/24] staging: nvec: Convert to platform remove callback returning void
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
@ 2023-04-03 15:40 ` Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 19/24] staging: nvec: nvec_kbd: " Uwe Kleine-König
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-04-03 15:40 UTC (permalink / raw)
To: Marc Dietrich, Greg Kroah-Hartman
Cc: ac100, linux-tegra, linux-staging, 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/staging/nvec/nvec.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index b3f114cb00dc..2823cacde130 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -882,7 +882,7 @@ static int tegra_nvec_probe(struct platform_device *pdev)
return 0;
}
-static int tegra_nvec_remove(struct platform_device *pdev)
+static void tegra_nvec_remove(struct platform_device *pdev)
{
struct nvec_chip *nvec = platform_get_drvdata(pdev);
@@ -893,8 +893,6 @@ static int tegra_nvec_remove(struct platform_device *pdev)
cancel_work_sync(&nvec->tx_work);
/* FIXME: needs check whether nvec is responsible for power off */
pm_power_off = NULL;
-
- return 0;
}
#ifdef CONFIG_PM_SLEEP
@@ -942,7 +940,7 @@ MODULE_DEVICE_TABLE(of, nvidia_nvec_of_match);
static struct platform_driver nvec_device_driver = {
.probe = tegra_nvec_probe,
- .remove = tegra_nvec_remove,
+ .remove_new = tegra_nvec_remove,
.driver = {
.name = "nvec",
.pm = &nvec_pm_ops,
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 19/24] staging: nvec: nvec_kbd: Convert to platform remove callback returning void
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 18/24] staging: nvec: " Uwe Kleine-König
@ 2023-04-03 15:40 ` Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 20/24] staging: nvec_power: " Uwe Kleine-König
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-04-03 15:40 UTC (permalink / raw)
To: Marc Dietrich, Greg Kroah-Hartman
Cc: ac100, linux-tegra, linux-staging, 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/staging/nvec/nvec_kbd.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/nvec/nvec_kbd.c b/drivers/staging/nvec/nvec_kbd.c
index 386d619e3ee9..f9a1da952c0a 100644
--- a/drivers/staging/nvec/nvec_kbd.c
+++ b/drivers/staging/nvec/nvec_kbd.c
@@ -161,7 +161,7 @@ static int nvec_kbd_probe(struct platform_device *pdev)
return 0;
}
-static int nvec_kbd_remove(struct platform_device *pdev)
+static void nvec_kbd_remove(struct platform_device *pdev)
{
struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
char disable_kbd[] = { NVEC_KBD, DISABLE_KBD },
@@ -170,13 +170,11 @@ static int nvec_kbd_remove(struct platform_device *pdev)
nvec_write_async(nvec, uncnfg_wake_key_reporting, 3);
nvec_write_async(nvec, disable_kbd, 2);
nvec_unregister_notifier(nvec, &keys_dev.notifier);
-
- return 0;
}
static struct platform_driver nvec_kbd_driver = {
.probe = nvec_kbd_probe,
- .remove = nvec_kbd_remove,
+ .remove_new = nvec_kbd_remove,
.driver = {
.name = "nvec-kbd",
},
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 20/24] staging: nvec_power: Convert to platform remove callback returning void
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 18/24] staging: nvec: " Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 19/24] staging: nvec: nvec_kbd: " Uwe Kleine-König
@ 2023-04-03 15:40 ` Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 21/24] staging: nvec_ps2: " Uwe Kleine-König
2023-04-03 19:50 ` [PATCH 00/24] staging: " Greg Kroah-Hartman
4 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-04-03 15:40 UTC (permalink / raw)
To: Marc Dietrich, Greg Kroah-Hartman
Cc: ac100, linux-tegra, linux-staging, 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/staging/nvec/nvec_power.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/nvec/nvec_power.c b/drivers/staging/nvec/nvec_power.c
index b1ef196e1cfe..9943b1fff190 100644
--- a/drivers/staging/nvec/nvec_power.c
+++ b/drivers/staging/nvec/nvec_power.c
@@ -416,7 +416,7 @@ static int nvec_power_probe(struct platform_device *pdev)
return PTR_ERR_OR_ZERO(*psy);
}
-static int nvec_power_remove(struct platform_device *pdev)
+static void nvec_power_remove(struct platform_device *pdev)
{
struct nvec_power *power = platform_get_drvdata(pdev);
@@ -429,13 +429,11 @@ static int nvec_power_remove(struct platform_device *pdev)
case BAT:
power_supply_unregister(nvec_bat_psy);
}
-
- return 0;
}
static struct platform_driver nvec_power_driver = {
.probe = nvec_power_probe,
- .remove = nvec_power_remove,
+ .remove_new = nvec_power_remove,
.driver = {
.name = "nvec-power",
}
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 21/24] staging: nvec_ps2: Convert to platform remove callback returning void
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
` (2 preceding siblings ...)
2023-04-03 15:40 ` [PATCH 20/24] staging: nvec_power: " Uwe Kleine-König
@ 2023-04-03 15:40 ` Uwe Kleine-König
2023-04-03 19:50 ` [PATCH 00/24] staging: " Greg Kroah-Hartman
4 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-04-03 15:40 UTC (permalink / raw)
To: Marc Dietrich, Greg Kroah-Hartman
Cc: ac100, linux-tegra, linux-staging, 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/staging/nvec/nvec_ps2.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/nvec/nvec_ps2.c b/drivers/staging/nvec/nvec_ps2.c
index 06041c7f7d4f..cb6d71b8dc83 100644
--- a/drivers/staging/nvec/nvec_ps2.c
+++ b/drivers/staging/nvec/nvec_ps2.c
@@ -125,7 +125,7 @@ static int nvec_mouse_probe(struct platform_device *pdev)
return 0;
}
-static int nvec_mouse_remove(struct platform_device *pdev)
+static void nvec_mouse_remove(struct platform_device *pdev)
{
struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
@@ -133,8 +133,6 @@ static int nvec_mouse_remove(struct platform_device *pdev)
ps2_stopstreaming(ps2_dev.ser_dev);
nvec_unregister_notifier(nvec, &ps2_dev.notifier);
serio_unregister_port(ps2_dev.ser_dev);
-
- return 0;
}
#ifdef CONFIG_PM_SLEEP
@@ -166,7 +164,7 @@ static SIMPLE_DEV_PM_OPS(nvec_mouse_pm_ops, nvec_mouse_suspend,
static struct platform_driver nvec_mouse_driver = {
.probe = nvec_mouse_probe,
- .remove = nvec_mouse_remove,
+ .remove_new = nvec_mouse_remove,
.driver = {
.name = "nvec-mouse",
.pm = &nvec_mouse_pm_ops,
--
2.39.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 00/24] staging: Convert to platform remove callback returning void
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
` (3 preceding siblings ...)
2023-04-03 15:40 ` [PATCH 21/24] staging: nvec_ps2: " Uwe Kleine-König
@ 2023-04-03 19:50 ` Greg Kroah-Hartman
4 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-03 19:50 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Deepak R Varma, Yuan Can, Simon Horman, Sven Van Asbroeck,
Vaibhav Hiremath, Johan Hovold, Alex Elder, Eugen Hristev,
Mauro Carvalho Chehab, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Steve Longerbeam, Philipp Zabel, Shawn Guo,
Sascha Hauer, Neil Armstrong, Kevin Hilman, Laurent Pinchart,
Ezequiel Garcia, Maxime Ripard, Paul Kocialkowski, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Parthiban Veerasooran,
Christian Gromm, Davidlohr Bueso, Marc Dietrich, Florian Fainelli,
Ray Jui, Scott Branden, Umang Jain, Andy Shevchenko,
Adrien Thierry, Stefan Wahren, Fabio M. De Francesco, Phil Elwell,
Jakob Koschel, linux-staging, kernel, greybus-dev, linux-media,
linux-arm-kernel, Fabio Estevam, NXP Linux Team, Jerome Brunet,
Martin Blumenstingl, linux-amlogic, linux-rockchip, linux-sunxi,
ac100, linux-tegra, Broadcom internal kernel review list,
linux-rpi-kernel
On Mon, Apr 03, 2023 at 05:39:50PM +0200, Uwe Kleine-König wrote:
> Hello,
>
> this series adapts the platform drivers below drivers/staging 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.
>
> By changing the remove callback to return void driver authors cannot
> reasonably assume any more that there is some kind of cleanup later.
>
> All drivers in staging already return zero in their remove callback, so
> they can be trivially converted.
>
> The changes to the individual drivers are all orthogonal. If I need to
> resend some patches because of some review feedback, I'd like to only
> send the patches that actually needed changes, so please pick up the
> remaining patches that don't need changing to reduce the amount of mail.
Note, I can't take drivers/staging/media/ patches, those go through the
v4l maintainer's tree. So I've taken the non-media patches from this
series now.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-04-03 19:50 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-03 15:39 [PATCH 00/24] staging: Convert to platform remove callback returning void Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 18/24] staging: nvec: " Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 19/24] staging: nvec: nvec_kbd: " Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 20/24] staging: nvec_power: " Uwe Kleine-König
2023-04-03 15:40 ` [PATCH 21/24] staging: nvec_ps2: " Uwe Kleine-König
2023-04-03 19:50 ` [PATCH 00/24] staging: " Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).