* [PATCH 00/89] i2c: Convert to platform remove callback returning void
@ 2023-05-08 20:51 Uwe Kleine-König
2023-05-08 20:51 ` [PATCH 14/89] i2c: cpm: " Uwe Kleine-König
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:51 UTC (permalink / raw)
To: Thor Thayer, Elie Morisse, Shyam Sundar S K, Brendan Higgins,
Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Wolfram Sang, ye xingchen, Krzysztof Adamski,
Ray Jui, Scott Branden, Greg Kroah-Hartman, Allison Randal,
Thomas Gleixner, Florian Fainelli, Wolfram Sang, Kamal Dasu,
Michal Simek, Hans de Goede, Jochen Friedrich, Benson Leung,
Krzysztof Kozlowski, Bartosz Golaszewski, Jarkko Nikula,
Baruch Siach, Jean-Marie Verdun, Nick Hawkins, Dong Aisheng,
Shawn Guo, Sascha Hauer, Oleksij Rempel, Jean Delvare,
Paul Cercueil, Chris Pringle, Vladimir Zapolskiy, Neil Armstrong,
Kevin Hilman, Julia Lawall, Conor Dooley, Daire McNamara,
Khalil Blaiech, Asmaa Mnebhi, Vadim Pasternak, Michael Shych,
Chris Packham, Qii Wang, Matthias Brugger, Stefan Roese,
Gregory CLEMENT, Matthias Schiffer, Stefan Wahren, Avi Fishman,
Tomer Maimon, Tali Perry, Peter Korsgaard, Andrew Lunn,
Robert Richter, Tony Lindgren, Aaro Koskinen, Janusz Krzysztofik,
Vignesh R, Michael Ellerman, Hector Martin, Sven Peter,
Rob Herring, Srinivas Kandagatla, Sebastian Reichel,
Miquel Raynal, Loic Poulain, Robert Foss, Andy Gross,
Bjorn Andersson, Chris Brandt, Heiko Stuebner, Phil Edworthy,
Andy Shevchenko, Philipp Zabel, Jim Cromie, Patrice Chotard,
Pierre-Yves MORDRET, Alain Volmat, Maxime Coquelin,
Alexandre Torgue, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Ard Biesheuvel, Thierry Reding, Jonathan Hunter, Laxman Dewangan,
Kunihiko Hayashi, Masami Hiramatsu, Linus Walleij, Andi Shyti,
Wei Chen, George Cherian, Peter Rosin, Peter Korsgaard
Cc: linux-aspeed, Jan Dabros, Alim Akhtar, Guenter Roeck, linux-riscv,
Fabio Estevam, linux-stm32, Alyssa Rosenzweig, Jerome Brunet,
chrome-platform, linux-samsung-soc, Benjamin Fair, linux-rockchip,
openbmc, Nancy Yuen, Broadcom internal kernel review list,
NXP Linux Team, Konrad Dybcio, linux-sunxi, Joel Stanley,
Martin Blumenstingl, linux-arm-msm, Nicholas Piggin,
linux-mediatek, linux-rpi-kernel, linux-tegra, linux-amlogic
Hello,
this series convers the drivers below drivers/i2c to the .remove_new()
callback of struct platform_driver(). The motivation is to make the
remove callback less prone for errors and wrong assumptions. See commit
5c5a7680e67b ("platform: Provide a remove callback that returns no
value") for a more detailed rationale.
All but one driver already returned zero unconditionally in their
.remove() callback, so converting them to .remove_new() is trivial.
i2c-davinci has two patches in this series, first the error path is
improved to not return an error code, then it's converted as the others
drivers are.
The two davinci patches are also the only interdependency in this
series. I was unsure if I should split the series in two, the busses and
the mux changes; if convenient these can be applied independent of each
other.
Best regards
Uwe
Uwe Kleine-König (89):
i2c: altera: Convert to platform remove callback returning void
i2c: amd-mp2-plat: Convert to platform remove callback returning void
i2c: aspeed: Convert to platform remove callback returning void
i2c: at91-core: Convert to platform remove callback returning void
i2c: au1550: Convert to platform remove callback returning void
i2c: axxia: Convert to platform remove callback returning void
i2c: bcm-iproc: Convert to platform remove callback returning void
i2c: bcm-kona: Convert to platform remove callback returning void
i2c: bcm2835: Convert to platform remove callback returning void
i2c: brcmstb: Convert to platform remove callback returning void
i2c: cadence: Convert to platform remove callback returning void
i2c: cbus-gpio: Convert to platform remove callback returning void
i2c: cht-wc: Convert to platform remove callback returning void
i2c: cpm: Convert to platform remove callback returning void
i2c: cros-ec-tunnel: Convert to platform remove callback returning
void
i2c: davinci: Improve error reporting for problems during .remove()
i2c: davinci: Convert to platform remove callback returning void
i2c: designware-platdrv: Convert to platform remove callback returning
void
i2c: digicolor: Convert to platform remove callback returning void
i2c: dln2: Convert to platform remove callback returning void
i2c: emev2: Convert to platform remove callback returning void
i2c: exynos5: Convert to platform remove callback returning void
i2c: gpio: Convert to platform remove callback returning void
i2c: gxp: Convert to platform remove callback returning void
i2c: highlander: Convert to platform remove callback returning void
i2c: hix5hd2: Convert to platform remove callback returning void
i2c: ibm_iic: Convert to platform remove callback returning void
i2c: img-scb: Convert to platform remove callback returning void
i2c: imx-lpi2c: Convert to platform remove callback returning void
i2c: imx: Convert to platform remove callback returning void
i2c: iop3xx: Convert to platform remove callback returning void
i2c: isch: Convert to platform remove callback returning void
i2c: jz4780: Convert to platform remove callback returning void
i2c: kempld: Convert to platform remove callback returning void
i2c: lpc2k: Convert to platform remove callback returning void
i2c: meson: Convert to platform remove callback returning void
i2c: microchip-corei2c: Convert to platform remove callback returning
void
i2c: mlxbf: Convert to platform remove callback returning void
i2c: mlxcpld: Convert to platform remove callback returning void
i2c: mpc: Convert to platform remove callback returning void
i2c: mt65xx: Convert to platform remove callback returning void
i2c: mt7621: Convert to platform remove callback returning void
i2c: mv64xxx: Convert to platform remove callback returning void
i2c: mxs: Convert to platform remove callback returning void
i2c: npcm7xx: Convert to platform remove callback returning void
i2c: ocores: Convert to platform remove callback returning void
i2c: octeon-platdrv: Convert to platform remove callback returning
void
i2c: omap: Convert to platform remove callback returning void
i2c: opal: Convert to platform remove callback returning void
i2c: pasemi-platform: Convert to platform remove callback returning
void
i2c: pca-platform: Convert to platform remove callback returning void
i2c: pnx: Convert to platform remove callback returning void
i2c: powermac: Convert to platform remove callback returning void
i2c: pxa: Convert to platform remove callback returning void
i2c: qcom-cci: Convert to platform remove callback returning void
i2c: qcom-geni: Convert to platform remove callback returning void
i2c: qup: Convert to platform remove callback returning void
i2c: rcar: Convert to platform remove callback returning void
i2c: riic: Convert to platform remove callback returning void
i2c: rk3x: Convert to platform remove callback returning void
i2c: rzv2m: Convert to platform remove callback returning void
i2c: s3c2410: Convert to platform remove callback returning void
i2c: scmi: Convert to platform remove callback returning void
i2c: scx200_acb: Convert to platform remove callback returning void
i2c: sh7760: Convert to platform remove callback returning void
i2c: sh_mobile: Convert to platform remove callback returning void
i2c: simtec: Convert to platform remove callback returning void
i2c: st: Convert to platform remove callback returning void
i2c: stm32f4: Convert to platform remove callback returning void
i2c: stm32f7: Convert to platform remove callback returning void
i2c: sun6i-p2wi: Convert to platform remove callback returning void
i2c: synquacer: Convert to platform remove callback returning void
i2c: tegra-bpmp: Convert to platform remove callback returning void
i2c: tegra: Convert to platform remove callback returning void
i2c: uniphier-f: Convert to platform remove callback returning void
i2c: uniphier: Convert to platform remove callback returning void
i2c: versatile: Convert to platform remove callback returning void
i2c: viperboard: Convert to platform remove callback returning void
i2c: wmt: Convert to platform remove callback returning void
i2c: xgene-slimpro: Convert to platform remove callback returning void
i2c: xiic: Convert to platform remove callback returning void
i2c: xlp9xx: Convert to platform remove callback returning void
i2c: mux: arb-gpio-challenge: Convert to platform remove callback
returning void
i2c: mux: demux-pinctrl: Convert to platform remove callback returning
void
i2c: mux: gpio: Convert to platform remove callback returning void
i2c: mux: gpmux: Convert to platform remove callback returning void
i2c: mux: mlxcpld: Convert to platform remove callback returning void
i2c: mux: pinctrl: Convert to platform remove callback returning void
i2c: mux: reg: Convert to platform remove callback returning void
drivers/i2c/busses/i2c-altera.c | 6 ++----
drivers/i2c/busses/i2c-amd-mp2-plat.c | 5 ++---
drivers/i2c/busses/i2c-aspeed.c | 6 ++----
drivers/i2c/busses/i2c-at91-core.c | 6 ++----
drivers/i2c/busses/i2c-au1550.c | 5 ++---
drivers/i2c/busses/i2c-axxia.c | 6 ++----
drivers/i2c/busses/i2c-bcm-iproc.c | 6 ++----
drivers/i2c/busses/i2c-bcm-kona.c | 6 ++----
drivers/i2c/busses/i2c-bcm2835.c | 6 ++----
drivers/i2c/busses/i2c-brcmstb.c | 5 ++---
drivers/i2c/busses/i2c-cadence.c | 6 ++----
drivers/i2c/busses/i2c-cbus-gpio.c | 6 ++----
drivers/i2c/busses/i2c-cht-wc.c | 6 ++----
drivers/i2c/busses/i2c-cpm.c | 6 ++----
drivers/i2c/busses/i2c-cros-ec-tunnel.c | 6 ++----
drivers/i2c/busses/i2c-davinci.c | 14 ++++++--------
drivers/i2c/busses/i2c-designware-platdrv.c | 6 ++----
drivers/i2c/busses/i2c-digicolor.c | 6 ++----
drivers/i2c/busses/i2c-dln2.c | 6 ++----
drivers/i2c/busses/i2c-emev2.c | 6 ++----
drivers/i2c/busses/i2c-exynos5.c | 6 ++----
drivers/i2c/busses/i2c-gpio.c | 6 ++----
drivers/i2c/busses/i2c-gxp.c | 6 ++----
drivers/i2c/busses/i2c-highlander.c | 6 ++----
drivers/i2c/busses/i2c-hix5hd2.c | 6 ++----
drivers/i2c/busses/i2c-ibm_iic.c | 6 ++----
drivers/i2c/busses/i2c-img-scb.c | 6 ++----
drivers/i2c/busses/i2c-imx-lpi2c.c | 6 ++----
drivers/i2c/busses/i2c-imx.c | 6 ++----
drivers/i2c/busses/i2c-iop3xx.c | 6 ++----
drivers/i2c/busses/i2c-isch.c | 6 ++----
drivers/i2c/busses/i2c-jz4780.c | 5 ++---
drivers/i2c/busses/i2c-kempld.c | 6 ++----
drivers/i2c/busses/i2c-lpc2k.c | 6 ++----
drivers/i2c/busses/i2c-meson.c | 6 ++----
drivers/i2c/busses/i2c-microchip-corei2c.c | 6 ++----
drivers/i2c/busses/i2c-mlxbf.c | 6 ++----
drivers/i2c/busses/i2c-mlxcpld.c | 6 ++----
drivers/i2c/busses/i2c-mpc.c | 6 ++----
drivers/i2c/busses/i2c-mt65xx.c | 6 ++----
drivers/i2c/busses/i2c-mt7621.c | 6 ++----
drivers/i2c/busses/i2c-mv64xxx.c | 6 ++----
drivers/i2c/busses/i2c-mxs.c | 6 ++----
drivers/i2c/busses/i2c-npcm7xx.c | 5 ++---
drivers/i2c/busses/i2c-ocores.c | 6 ++----
drivers/i2c/busses/i2c-octeon-platdrv.c | 5 ++---
drivers/i2c/busses/i2c-omap.c | 6 ++----
drivers/i2c/busses/i2c-opal.c | 6 ++----
drivers/i2c/busses/i2c-pasemi-platform.c | 5 ++---
drivers/i2c/busses/i2c-pca-platform.c | 6 ++----
drivers/i2c/busses/i2c-pnx.c | 6 ++----
drivers/i2c/busses/i2c-powermac.c | 6 ++----
drivers/i2c/busses/i2c-pxa.c | 6 ++----
drivers/i2c/busses/i2c-qcom-cci.c | 6 ++----
drivers/i2c/busses/i2c-qcom-geni.c | 5 ++---
drivers/i2c/busses/i2c-qup.c | 5 ++---
drivers/i2c/busses/i2c-rcar.c | 6 ++----
drivers/i2c/busses/i2c-riic.c | 6 ++----
drivers/i2c/busses/i2c-rk3x.c | 6 ++----
drivers/i2c/busses/i2c-rzv2m.c | 6 ++----
drivers/i2c/busses/i2c-s3c2410.c | 6 ++----
drivers/i2c/busses/i2c-scmi.c | 6 ++----
drivers/i2c/busses/i2c-sh7760.c | 6 ++----
drivers/i2c/busses/i2c-sh_mobile.c | 5 ++---
drivers/i2c/busses/i2c-simtec.c | 6 ++----
drivers/i2c/busses/i2c-st.c | 6 ++----
drivers/i2c/busses/i2c-stm32f4.c | 6 ++----
drivers/i2c/busses/i2c-stm32f7.c | 6 ++----
drivers/i2c/busses/i2c-sun6i-p2wi.c | 6 ++----
drivers/i2c/busses/i2c-synquacer.c | 6 ++----
drivers/i2c/busses/i2c-tegra-bpmp.c | 6 ++----
drivers/i2c/busses/i2c-tegra.c | 6 ++----
drivers/i2c/busses/i2c-uniphier-f.c | 6 ++----
drivers/i2c/busses/i2c-uniphier.c | 6 ++----
drivers/i2c/busses/i2c-versatile.c | 5 ++---
drivers/i2c/busses/i2c-viperboard.c | 6 ++----
drivers/i2c/busses/i2c-wmt.c | 6 ++----
drivers/i2c/busses/i2c-xgene-slimpro.c | 6 ++----
drivers/i2c/busses/i2c-xiic.c | 6 ++----
drivers/i2c/busses/i2c-xlp9xx.c | 6 ++----
drivers/i2c/busses/scx200_acb.c | 6 ++----
drivers/i2c/muxes/i2c-arb-gpio-challenge.c | 5 ++---
drivers/i2c/muxes/i2c-demux-pinctrl.c | 6 ++----
drivers/i2c/muxes/i2c-mux-gpio.c | 6 ++----
drivers/i2c/muxes/i2c-mux-gpmux.c | 6 ++----
drivers/i2c/muxes/i2c-mux-mlxcpld.c | 5 ++---
drivers/i2c/muxes/i2c-mux-pinctrl.c | 6 ++----
drivers/i2c/muxes/i2c-mux-reg.c | 6 ++----
88 files changed, 180 insertions(+), 343 deletions(-)
base-commit: ac9a78681b921877518763ba0e89202254349d1b
--
2.39.2
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 14/89] i2c: cpm: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
@ 2023-05-08 20:51 ` Uwe Kleine-König
2023-05-16 10:59 ` Jochen Friedrich
2023-05-08 20:52 ` [PATCH 49/89] i2c: opal: " Uwe Kleine-König
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:51 UTC (permalink / raw)
To: Jochen Friedrich, Wolfram Sang; +Cc: linuxppc-dev, linux-i2c, 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/i2c/busses/i2c-cpm.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
index 24d584a1c9a7..732daf6a932b 100644
--- a/drivers/i2c/busses/i2c-cpm.c
+++ b/drivers/i2c/busses/i2c-cpm.c
@@ -676,7 +676,7 @@ static int cpm_i2c_probe(struct platform_device *ofdev)
return result;
}
-static int cpm_i2c_remove(struct platform_device *ofdev)
+static void cpm_i2c_remove(struct platform_device *ofdev)
{
struct cpm_i2c *cpm = platform_get_drvdata(ofdev);
@@ -685,8 +685,6 @@ static int cpm_i2c_remove(struct platform_device *ofdev)
cpm_i2c_shutdown(cpm);
kfree(cpm);
-
- return 0;
}
static const struct of_device_id cpm_i2c_match[] = {
@@ -703,7 +701,7 @@ MODULE_DEVICE_TABLE(of, cpm_i2c_match);
static struct platform_driver cpm_i2c_driver = {
.probe = cpm_i2c_probe,
- .remove = cpm_i2c_remove,
+ .remove_new = cpm_i2c_remove,
.driver = {
.name = "fsl-i2c-cpm",
.of_match_table = cpm_i2c_match,
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 14/89] i2c: cpm: Convert to platform remove callback returning void
2023-05-08 20:51 ` [PATCH 14/89] i2c: cpm: " Uwe Kleine-König
@ 2023-05-16 10:59 ` Jochen Friedrich
0 siblings, 0 replies; 9+ messages in thread
From: Jochen Friedrich @ 2023-05-16 10:59 UTC (permalink / raw)
To: Uwe Kleine-König, Wolfram Sang; +Cc: linuxppc-dev, linux-i2c, kernel
Acked-by: Jochen Friedrich <jochen@scram.de>
Am 08.05.2023 um 22:51 schrieb Uwe Kleine-König:
> 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/i2c/busses/i2c-cpm.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
> index 24d584a1c9a7..732daf6a932b 100644
> --- a/drivers/i2c/busses/i2c-cpm.c
> +++ b/drivers/i2c/busses/i2c-cpm.c
> @@ -676,7 +676,7 @@ static int cpm_i2c_probe(struct platform_device *ofdev)
> return result;
> }
>
> -static int cpm_i2c_remove(struct platform_device *ofdev)
> +static void cpm_i2c_remove(struct platform_device *ofdev)
> {
> struct cpm_i2c *cpm = platform_get_drvdata(ofdev);
>
> @@ -685,8 +685,6 @@ static int cpm_i2c_remove(struct platform_device *ofdev)
> cpm_i2c_shutdown(cpm);
>
> kfree(cpm);
> -
> - return 0;
> }
>
> static const struct of_device_id cpm_i2c_match[] = {
> @@ -703,7 +701,7 @@ MODULE_DEVICE_TABLE(of, cpm_i2c_match);
>
> static struct platform_driver cpm_i2c_driver = {
> .probe = cpm_i2c_probe,
> - .remove = cpm_i2c_remove,
> + .remove_new = cpm_i2c_remove,
> .driver = {
> .name = "fsl-i2c-cpm",
> .of_match_table = cpm_i2c_match,
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 49/89] i2c: opal: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-08 20:51 ` [PATCH 14/89] i2c: cpm: " Uwe Kleine-König
@ 2023-05-08 20:52 ` Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 50/89] i2c: pasemi-platform: " Uwe Kleine-König
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:52 UTC (permalink / raw)
To: Michael Ellerman, Wolfram Sang
Cc: kernel, open list:LINUX FOR POWERPC, Nicholas Piggin, linux-i2c
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/i2c/busses/i2c-opal.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-opal.c b/drivers/i2c/busses/i2c-opal.c
index 9f773b4f5ed8..17ef87d50f7c 100644
--- a/drivers/i2c/busses/i2c-opal.c
+++ b/drivers/i2c/busses/i2c-opal.c
@@ -232,13 +232,11 @@ static int i2c_opal_probe(struct platform_device *pdev)
return rc;
}
-static int i2c_opal_remove(struct platform_device *pdev)
+static void i2c_opal_remove(struct platform_device *pdev)
{
struct i2c_adapter *adapter = platform_get_drvdata(pdev);
i2c_del_adapter(adapter);
-
- return 0;
}
static const struct of_device_id i2c_opal_of_match[] = {
@@ -251,7 +249,7 @@ MODULE_DEVICE_TABLE(of, i2c_opal_of_match);
static struct platform_driver i2c_opal_driver = {
.probe = i2c_opal_probe,
- .remove = i2c_opal_remove,
+ .remove_new = i2c_opal_remove,
.driver = {
.name = "i2c-opal",
.of_match_table = i2c_opal_of_match,
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 50/89] i2c: pasemi-platform: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-08 20:51 ` [PATCH 14/89] i2c: cpm: " Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 49/89] i2c: opal: " Uwe Kleine-König
@ 2023-05-08 20:52 ` Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 53/89] i2c: powermac: " Uwe Kleine-König
2023-06-01 7:33 ` [PATCH 00/89] i2c: " Uwe Kleine-König
4 siblings, 0 replies; 9+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:52 UTC (permalink / raw)
To: Hector Martin, Sven Peter, Michael Ellerman, Wolfram Sang
Cc: Alyssa Rosenzweig, linux-i2c, Nicholas Piggin, kernel,
open list:LINUX FOR POWERPC, linux-arm-kernel, asahi
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/i2c/busses/i2c-pasemi-platform.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/i2c/busses/i2c-pasemi-platform.c b/drivers/i2c/busses/i2c-pasemi-platform.c
index e35945a91dbe..0a44f64897c7 100644
--- a/drivers/i2c/busses/i2c-pasemi-platform.c
+++ b/drivers/i2c/busses/i2c-pasemi-platform.c
@@ -98,12 +98,11 @@ static int pasemi_platform_i2c_probe(struct platform_device *pdev)
return error;
}
-static int pasemi_platform_i2c_remove(struct platform_device *pdev)
+static void pasemi_platform_i2c_remove(struct platform_device *pdev)
{
struct pasemi_platform_i2c_data *data = platform_get_drvdata(pdev);
clk_disable_unprepare(data->clk_ref);
- return 0;
}
static const struct of_device_id pasemi_platform_i2c_of_match[] = {
@@ -119,7 +118,7 @@ static struct platform_driver pasemi_platform_i2c_driver = {
.of_match_table = pasemi_platform_i2c_of_match,
},
.probe = pasemi_platform_i2c_probe,
- .remove = pasemi_platform_i2c_remove,
+ .remove_new = pasemi_platform_i2c_remove,
};
module_platform_driver(pasemi_platform_i2c_driver);
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 53/89] i2c: powermac: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
` (2 preceding siblings ...)
2023-05-08 20:52 ` [PATCH 50/89] i2c: pasemi-platform: " Uwe Kleine-König
@ 2023-05-08 20:52 ` Uwe Kleine-König
2023-06-01 7:33 ` [PATCH 00/89] i2c: " Uwe Kleine-König
4 siblings, 0 replies; 9+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:52 UTC (permalink / raw)
To: Michael Ellerman, Greg Kroah-Hartman, Rob Herring,
Srinivas Kandagatla, Sebastian Reichel, Miquel Raynal,
Wolfram Sang
Cc: kernel, open list:LINUX FOR POWERPC, Nicholas Piggin, linux-i2c
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/i2c/busses/i2c-powermac.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-powermac.c b/drivers/i2c/busses/i2c-powermac.c
index ec706a3aba26..4996a628fdae 100644
--- a/drivers/i2c/busses/i2c-powermac.c
+++ b/drivers/i2c/busses/i2c-powermac.c
@@ -188,14 +188,12 @@ static const struct i2c_adapter_quirks i2c_powermac_quirks = {
.max_num_msgs = 1,
};
-static int i2c_powermac_remove(struct platform_device *dev)
+static void i2c_powermac_remove(struct platform_device *dev)
{
struct i2c_adapter *adapter = platform_get_drvdata(dev);
i2c_del_adapter(adapter);
memset(adapter, 0, sizeof(*adapter));
-
- return 0;
}
static u32 i2c_powermac_get_addr(struct i2c_adapter *adap,
@@ -439,7 +437,7 @@ static int i2c_powermac_probe(struct platform_device *dev)
static struct platform_driver i2c_powermac_driver = {
.probe = i2c_powermac_probe,
- .remove = i2c_powermac_remove,
+ .remove_new = i2c_powermac_remove,
.driver = {
.name = "i2c-powermac",
.bus = &platform_bus_type,
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 00/89] i2c: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
` (3 preceding siblings ...)
2023-05-08 20:52 ` [PATCH 53/89] i2c: powermac: " Uwe Kleine-König
@ 2023-06-01 7:33 ` Uwe Kleine-König
2023-06-01 7:43 ` Biju Das
[not found] ` <ZHijKtBbH2sCSuT4@shikoro>
4 siblings, 2 replies; 9+ messages in thread
From: Uwe Kleine-König @ 2023-06-01 7:33 UTC (permalink / raw)
To: Wolfram Sang
Cc: Andrew Lunn, Shyam Sundar S K, Tomer Maimon, Linus Walleij,
Conor Dooley, Alim Akhtar, Miquel Raynal, Dmitry Osipenko,
linux-stm32, Heiko Stuebner, linux-samsung-soc, Robert Foss,
Samuel Holland, Khalil Blaiech, NXP Linux Team, linux-sunxi,
Jean Delvare, linux-tegra, ye xingchen, Sascha Hauer,
Nicholas Piggin, Thomas Gleixner, linux-omap, Allison Randal,
Scott Branden, Daire McNamara, Greg Kroah-Hartman
[-- Attachment #1: Type: text/plain, Size: 1319 bytes --]
[Dropped Phil Edworthy from recipents as his email address has problems]
Hello,
On Mon, May 08, 2023 at 10:51:37PM +0200, Uwe Kleine-König wrote:
> this series convers the drivers below drivers/i2c to the .remove_new()
> callback of struct platform_driver(). The motivation is to make the
> remove callback less prone for errors and wrong assumptions. See commit
> 5c5a7680e67b ("platform: Provide a remove callback that returns no
> value") for a more detailed rationale.
>
> All but one driver already returned zero unconditionally in their
> .remove() callback, so converting them to .remove_new() is trivial.
> i2c-davinci has two patches in this series, first the error path is
> improved to not return an error code, then it's converted as the others
> drivers are.
>
> The two davinci patches are also the only interdependency in this
> series. I was unsure if I should split the series in two, the busses and
> the mux changes; if convenient these can be applied independent of each
> other.
I wonder how this series will go in. My expectation was that Wolfram
picks up the whole series via his tree?!
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread* RE: [PATCH 00/89] i2c: Convert to platform remove callback returning void
2023-06-01 7:33 ` [PATCH 00/89] i2c: " Uwe Kleine-König
@ 2023-06-01 7:43 ` Biju Das
[not found] ` <ZHijKtBbH2sCSuT4@shikoro>
1 sibling, 0 replies; 9+ messages in thread
From: Biju Das @ 2023-06-01 7:43 UTC (permalink / raw)
To: Uwe Kleine-König, Wolfram Sang, Fabrizio Castro
Cc: Andrew Lunn, Shyam Sundar S K, Tomer Maimon, Linus Walleij,
Conor Dooley, Alim Akhtar, Miquel Raynal, Dmitry Osipenko,
linux-stm32@st-md-mailman.stormreply.com, Heiko Stuebner,
linux-samsung-soc@vger.kernel.org, Robert Foss, Samuel Holland,
Khalil Blaiech, NXP Linux Team, linux-sunxi@lists.linux.dev,
Jean Delvare, linux-tegra@vger.kernel.org, ye xingchen,
Sascha Hauer, Nicholas Piggin, Thomas Gleixner,
"linux-omap@vger.kernel.org" <linu
> Subject: Re: [PATCH 00/89] i2c: Convert to platform remove callback
> returning void
>
> [Dropped Phil Edworthy from recipents as his email address has problems]
Phil no longer works with Renesas. Adding Fabrizio who is taking care of
RZ/V2M I2C driver.
Cheers,
Biju
^ permalink raw reply [flat|nested] 9+ messages in thread[parent not found: <ZHijKtBbH2sCSuT4@shikoro>]
* Re: [PATCH 00/89] i2c: Convert to platform remove callback returning void
[not found] ` <ZHijKtBbH2sCSuT4@shikoro>
@ 2023-06-05 7:54 ` Wolfram Sang
0 siblings, 0 replies; 9+ messages in thread
From: Wolfram Sang @ 2023-06-05 7:54 UTC (permalink / raw)
To: Uwe Kleine-König, Thor Thayer, Elie Morisse,
Shyam Sundar S K, Brendan Higgins, Codrin Ciubotariu,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, ye xingchen,
Krzysztof Adamski, Ray Jui, Scott Branden, Greg Kroah-Hartman,
Allison Randal, Thomas Gleixner, Florian Fainelli, Kamal Dasu,
Michal Simek, Hans de Goede, Jochen Friedrich, Benson Leung,
Krzysztof Kozlowski, Bartosz Golaszewski, Jarkko Nikula,
Baruch Siach, Jean-Marie Verdun, Nick Hawkins, Dong Aisheng,
Shawn Guo, Sascha Hauer, Oleksij Rempel, Jean Delvare,
Paul Cercueil, Chris Pringle, Vladimir Zapolskiy, Neil Armstrong,
Kevin Hilman, Julia Lawall, Conor Dooley, Daire McNamara,
Khalil Blaiech, Asmaa Mnebhi, Vadim Pasternak, Michael Shych,
Chris Packham, Qii Wang, Matthias Brugger, Stefan Roese,
Gregory CLEMENT, Matthias Schiffer, Stefan Wahren, Avi Fishman,
Tomer Maimon, Tali Perry, Peter Korsgaard, Andrew Lunn,
Robert Richter, Tony Lindgren, Aaro Koskinen, Janusz Krzysztofik,
Vignesh R, Michael Ellerman, Hector Martin, Sven Peter,
Rob Herring, Srinivas Kandagatla, Sebastian Reichel,
Miquel Raynal, Loic Poulain, Robert Foss, Andy Gross,
Bjorn Andersson, Chris Brandt, Heiko Stuebner, Andy Shevchenko,
Philipp Zabel, Jim Cromie, Patrice Chotard, Pierre-Yves MORDRET,
Alain Volmat, Maxime Coquelin, Alexandre Torgue, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Ard Biesheuvel, Thierry Reding,
Jonathan Hunter, Laxman Dewangan, Kunihiko Hayashi,
Masami Hiramatsu, Linus Walleij, Andi Shyti, Wei Chen,
George Cherian, Peter Rosin, Peter Korsgaard, linux-aspeed,
Benjamin Herrenschmidt, Jan Dabros, Alim Akhtar, Guenter Roeck,
linux-riscv, Fabio Estevam, linux-stm32, Alyssa Rosenzweig,
Jerome Brunet, chrome-platform, linux-samsung-soc, Benjamin Fair,
linux-rockchip, openbmc, Christophe Leroy, Nancy Yuen,
Broadcom internal kernel review list, NXP Linux Team,
Konrad Dybcio, linux-sunxi, Joel Stanley, Martin Blumenstingl,
linux-arm-msm, Nicholas Piggin, linux-mediatek, linux-rpi-kernel,
linux-tegra, linux-amlogic, linux-omap, Mika Westerberg,
linux-arm-kernel, AngeloGioacchino Del Regno, Andrew Jeffery,
Patrick Venture, linux-mips, linux-renesas-soc, Dmitry Osipenko,
asahi, kernel, linuxppc-dev, linux-i2c
[-- Attachment #1: Type: text/plain, Size: 426 bytes --]
On Thu, Jun 01, 2023 at 03:54:50PM +0200, Wolfram Sang wrote:
>
> > I wonder how this series will go in. My expectation was that Wolfram
> > picks up the whole series via his tree?!
>
> Will do. I am currently super-busy, though.
Whole series applied to for-next. I squashed all the commits into one.
These are mostly simple changes which we won't revert anyhow, but fix
incrementally if we ever find an issue.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-06-06 0:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-08 20:51 ` [PATCH 14/89] i2c: cpm: " Uwe Kleine-König
2023-05-16 10:59 ` Jochen Friedrich
2023-05-08 20:52 ` [PATCH 49/89] i2c: opal: " Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 50/89] i2c: pasemi-platform: " Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 53/89] i2c: powermac: " Uwe Kleine-König
2023-06-01 7:33 ` [PATCH 00/89] i2c: " Uwe Kleine-König
2023-06-01 7:43 ` Biju Das
[not found] ` <ZHijKtBbH2sCSuT4@shikoro>
2023-06-05 7:54 ` Wolfram Sang
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).