Linux Samsung SOC development
 help / color / mirror / Atom feed
* [PATCH 00/97] usb: Convert to platform remove callback returning void
@ 2023-05-17 23:01 Uwe Kleine-König
  2023-05-17 23:01 ` [PATCH 14/97] usb: dwc3-exynos: " Uwe Kleine-König
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2023-05-17 23:01 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Peter Chen, Pawel Laszczak, Shawn Guo,
	Sascha Hauer, Thierry Reding, Jonathan Hunter, Chunfeng Yun,
	Christophe JAILLET, Prashanth K, Minas Harutyunyan, Thinh Nguyen,
	Krzysztof Kozlowski, Neil Armstrong, Kevin Hilman, Andy Gross,
	Bjorn Andersson, Patrice Chotard, Michal Simek, Linus Walleij,
	Andy Shevchenko, Joel Stanley, Benjamin Herrenschmidt, Lei YU,
	Neal Liu, Henry Tian, Cristian Birsan, Nicolas Ferre,
	Alexandre Belloni, Claudiu Beznea, Kevin Cernekee, Justin Chen,
	Al Cooper, Li Yang, Gaosheng Cui, Alan Stern, Aaro Koskinen,
	Paolo Abeni, Steven Rostedt (Google), Kalle Valo, Kang Chen,
	Shaomin Deng, Arnd Bergmann, Laurent Pinchart, Richard Leitner,
	Colin Ian King, Wolfram Sang, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Biju Das, Geert Uytterhoeven, Zheng Wang,
	Phil Edworthy, Herve Codina, Rob Herring, Wayne Chang,
	Haotien Hsu, Jim Lin, Tang Bin, Sing-Han Chen, Piyush Mehta,
	Avi Fishman, Tomer Maimon, Tali Perry, Darren Stevens,
	Alexander Stein, Olav Kongas, Artur Bujdoso, Vladimir Zapolskiy,
	Gustavo A. R. Silva, Mathias Nyman, Matthias Brugger,
	Rui Miguel Silva, Souradeep Chowdhury, Francesco Dolcini,
	Emanuele Ghidoli, Jean Delvare, Dongliang Mu, Hans de Goede,
	Heikki Krogerus, Guenter Roeck, Dan Carpenter, Samuel Čavoj,
	Valentina Manea, Shuah Khan
  Cc: linux-usb, kernel, Roger Quadros, Aswath Govindraju,
	Fabio Estevam, NXP Linux Team, linux-arm-kernel, linux-tegra,
	Alim Akhtar, linux-samsung-soc, Jerome Brunet,
	Martin Blumenstingl, linux-amlogic, linux-omap, Konrad Dybcio,
	linux-arm-msm, Andrew Jeffery, linux-aspeed,
	Broadcom internal kernel review list, linuxppc-dev,
	linux-renesas-soc, Patrick Venture, Nancy Yuen, Benjamin Fair,
	openbmc, AngeloGioacchino Del Regno, linux-mediatek,
	Hongren Zheng

Hello,

this series convers the drivers below drivers/usb 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 drivers converted here already returned zero unconditionally in their
.remove() callback, so converting them to .remove_new() is trivial.

Best regards
Uwe

Uwe Kleine-König (97):
  usb: c67x00-drv: Convert to platform remove callback returning void
  usb: cdns3-imx: Convert to platform remove callback returning void
  usb: cdns3-plat: Convert to platform remove callback returning void
  usb: cdns3-ti: Convert to platform remove callback returning void
  usb: chipidea/ci_hdrc_imx: Convert to platform remove callback
    returning void
  usb: chipidea/ci_hdrc_msm: Convert to platform remove callback
    returning void
  usb: chipidea/ci_hdrc_tegra: Convert to platform remove callback
    returning void
  usb: chipidea/ci_hdrc_usb2: Convert to platform remove callback
    returning void
  usb: chipidea/core: Convert to platform remove callback returning void
  usb: common: usb-conn-gpio: Convert to platform remove callback
    returning void
  usb: dwc2/platform: Convert to platform remove callback returning void
  usb: core: Convert to platform remove callback returning void
  usb: dwc3-am62: Convert to platform remove callback returning void
  usb: dwc3-exynos: Convert to platform remove callback returning void
  usb: dwc3-imx8mp: Convert to platform remove callback returning void
  usb: dwc3-keystone: Convert to platform remove callback returning void
  usb: dwc3-meson-g12a: Convert to platform remove callback returning
    void
  usb: dwc3-of-simple: Convert to platform remove callback returning
    void
  usb: dwc3-omap: Convert to platform remove callback returning void
  usb: dwc3-qcom: Convert to platform remove callback returning void
  usb: dwc3-st: Convert to platform remove callback returning void
  usb: dwc3-xilinx: Convert to platform remove callback returning void
  usb: fotg210: Convert to platform remove callback returning void
  usb: gadget: hid: Convert to platform remove callback returning void
  usb: gadget: aspeed: Convert to platform remove callback returning
    void
  usb: gadget/atmel_usba_udc: Convert to platform remove callback
    returning void
  usb: gadget/bcm63xx_udc: Convert to platform remove callback returning
    void
  usb: bdc: Convert to platform remove callback returning void
  usb: gadget/dummy_hcd: Convert to platform remove callback returning
    void
  usb: gadget/fsl_qe_udc: Convert to platform remove callback returning
    void
  usb: gadget/fusb300_udc: Convert to platform remove callback returning
    void
  usb: gadget/m66592-udc: Convert to platform remove callback returning
    void
  usb: gadget/mv_u3d_core: Convert to platform remove callback returning
    void
  usb: gadget/mv_udc_core: Convert to platform remove callback returning
    void
  usb: gadget/net2272: Convert to platform remove callback returning
    void
  usb: gadget/omap_udc: Convert to platform remove callback returning
    void
  usb: gadget/pxa27x_udc: Convert to platform remove callback returning
    void
  usb: gadget/r8a66597-udc: Convert to platform remove callback
    returning void
  usb: gadget/renesas_usb3: Convert to platform remove callback
    returning void
  usb: gadget/renesas_usbf: Convert to platform remove callback
    returning void
  usb: gadget/rzv2m_usb3drd: Convert to platform remove callback
    returning void
  usb: gadget/snps_udc_plat: Convert to platform remove callback
    returning void
  usb: gadget/tegra-xudc: Convert to platform remove callback returning
    void
  usb: gadget/udc-xilinx: Convert to platform remove callback returning
    void
  usb: ehci-atmel: Convert to platform remove callback returning void
  usb: ehci-brcm: Convert to platform remove callback returning void
  usb: ehci-exynos: Convert to platform remove callback returning void
  usb: ehci-fsl: Convert to platform remove callback returning void
  usb: ehci-grlib: Convert to platform remove callback returning void
  usb: ehci-mv: Convert to platform remove callback returning void
  usb: ehci-npcm7xx: Convert to platform remove callback returning void
  usb: ehci-omap: Convert to platform remove callback returning void
  usb: ehci-orion: Convert to platform remove callback returning void
  usb: ehci-platform: Convert to platform remove callback returning void
  usb: ehci-ppc-of: Convert to platform remove callback returning void
  usb: ehci-sh: Convert to platform remove callback returning void
  usb: ehci-spear: Convert to platform remove callback returning void
  usb: ehci-st: Convert to platform remove callback returning void
  usb: ehci-xilinx-of: Convert to platform remove callback returning
    void
  usb: fsl-mph-dr-of: Convert to platform remove callback returning void
  usb: isp116x-hcd: Convert to platform remove callback returning void
  usb: isp1362-hcd: Convert to platform remove callback returning void
  usb: octeon-hcd: Convert to platform remove callback returning void
  usb: ohci-at91: Convert to platform remove callback returning void
  usb: ohci-da8xx: Convert to platform remove callback returning void
  usb: ohci-exynos: Convert to platform remove callback returning void
  usb: ohci-nxp: Convert to platform remove callback returning void
  usb: ohci-omap: Convert to platform remove callback returning void
  usb: ohci-platform: Convert to platform remove callback returning void
  usb: ohci-ppc-of: Convert to platform remove callback returning void
  usb: ohci-pxa27x: Convert to platform remove callback returning void
  usb: ohci-s3c2410: Convert to platform remove callback returning void
  usb: ohci-sm501: Convert to platform remove callback returning void
  usb: ohci-spear: Convert to platform remove callback returning void
  usb: ohci-st: Convert to platform remove callback returning void
  usb: oxu210hp-hcd: Convert to platform remove callback returning void
  usb: r8a66597-hcd: Convert to platform remove callback returning void
  usb: sl811-hcd: Convert to platform remove callback returning void
  usb: uhci-grlib: Convert to platform remove callback returning void
  usb: uhci-platform: Convert to platform remove callback returning void
  usb: xhci-histb: Convert to platform remove callback returning void
  usb: xhci-mtk: Convert to platform remove callback returning void
  usb: xhci-plat: Convert to platform remove callback returning void
  usb: xhci-tegra: Convert to platform remove callback returning void
  usb: isp1760: Convert to platform remove callback returning void
  usb: misc: eud: Convert to platform remove callback returning void
  usb: misc: usb3503: Convert to platform remove callback returning void
  usb: renesas_usbhs: Convert to platform remove callback returning void
  usb: roles: intel_xhci: Convert to platform remove callback returning
    void
  usb: typec: mux: gpio-sbu: Convert to platform remove callback
    returning void
  usb: typec: intel_pmc_mux: Convert to platform remove callback
    returning void
  usb: typec: qcom-pmic-typec: Convert to platform remove callback
    returning void
  usb: typec: tcpci_mt6360: Convert to platform remove callback
    returning void
  usb: typec: tcpci_mt6360: Convert to platform remove callback
    returning void
  usb: typec: wcove: Convert to platform remove callback returning void
  usb: typec: ucsi: acpi: Convert to platform remove callback returning
    void
  usbip: vhci_hcd: Convert to platform remove callback returning void

 drivers/usb/c67x00/c67x00-drv.c                |  6 ++----
 drivers/usb/cdns3/cdns3-imx.c                  |  6 ++----
 drivers/usb/cdns3/cdns3-plat.c                 |  5 ++---
 drivers/usb/cdns3/cdns3-ti.c                   |  6 ++----
 drivers/usb/chipidea/ci_hdrc_imx.c             |  6 ++----
 drivers/usb/chipidea/ci_hdrc_msm.c             |  6 ++----
 drivers/usb/chipidea/ci_hdrc_tegra.c           |  6 ++----
 drivers/usb/chipidea/ci_hdrc_usb2.c            |  6 ++----
 drivers/usb/chipidea/core.c                    |  6 ++----
 drivers/usb/common/usb-conn-gpio.c             |  6 ++----
 drivers/usb/dwc2/platform.c                    |  6 ++----
 drivers/usb/dwc3/core.c                        |  6 ++----
 drivers/usb/dwc3/dwc3-am62.c                   |  5 ++---
 drivers/usb/dwc3/dwc3-exynos.c                 |  6 ++----
 drivers/usb/dwc3/dwc3-imx8mp.c                 |  6 ++----
 drivers/usb/dwc3/dwc3-keystone.c               |  6 ++----
 drivers/usb/dwc3/dwc3-meson-g12a.c             |  6 ++----
 drivers/usb/dwc3/dwc3-of-simple.c              |  6 ++----
 drivers/usb/dwc3/dwc3-omap.c                   |  6 ++----
 drivers/usb/dwc3/dwc3-qcom.c                   |  6 ++----
 drivers/usb/dwc3/dwc3-st.c                     |  6 ++----
 drivers/usb/dwc3/dwc3-xilinx.c                 |  6 ++----
 drivers/usb/fotg210/fotg210-core.c             |  6 ++----
 drivers/usb/gadget/legacy/hid.c                |  6 ++----
 drivers/usb/gadget/udc/aspeed-vhub/core.c      |  8 +++-----
 drivers/usb/gadget/udc/atmel_usba_udc.c        |  6 ++----
 drivers/usb/gadget/udc/bcm63xx_udc.c           |  6 ++----
 drivers/usb/gadget/udc/bdc/bdc_core.c          |  5 ++---
 drivers/usb/gadget/udc/dummy_hcd.c             | 11 ++++-------
 drivers/usb/gadget/udc/fsl_qe_udc.c            |  6 ++----
 drivers/usb/gadget/udc/fusb300_udc.c           |  6 ++----
 drivers/usb/gadget/udc/m66592-udc.c            |  5 ++---
 drivers/usb/gadget/udc/mv_u3d_core.c           |  6 ++----
 drivers/usb/gadget/udc/mv_udc_core.c           |  6 ++----
 drivers/usb/gadget/udc/net2272.c               |  6 ++----
 drivers/usb/gadget/udc/omap_udc.c              |  6 ++----
 drivers/usb/gadget/udc/pxa27x_udc.c            |  6 ++----
 drivers/usb/gadget/udc/r8a66597-udc.c          |  6 ++----
 drivers/usb/gadget/udc/renesas_usb3.c          |  6 ++----
 drivers/usb/gadget/udc/renesas_usbf.c          |  6 ++----
 drivers/usb/gadget/udc/rzv2m_usb3drd.c         |  6 ++----
 drivers/usb/gadget/udc/snps_udc_plat.c         |  8 +++-----
 drivers/usb/gadget/udc/tegra-xudc.c            |  6 ++----
 drivers/usb/gadget/udc/udc-xilinx.c            |  6 ++----
 drivers/usb/host/ehci-atmel.c                  |  6 ++----
 drivers/usb/host/ehci-brcm.c                   |  5 ++---
 drivers/usb/host/ehci-exynos.c                 |  6 ++----
 drivers/usb/host/ehci-fsl.c                    |  6 ++----
 drivers/usb/host/ehci-grlib.c                  |  6 ++----
 drivers/usb/host/ehci-mv.c                     |  6 ++----
 drivers/usb/host/ehci-npcm7xx.c                |  6 ++----
 drivers/usb/host/ehci-omap.c                   |  6 ++----
 drivers/usb/host/ehci-orion.c                  |  6 ++----
 drivers/usb/host/ehci-platform.c               |  6 ++----
 drivers/usb/host/ehci-ppc-of.c                 |  6 ++----
 drivers/usb/host/ehci-sh.c                     |  6 ++----
 drivers/usb/host/ehci-spear.c                  |  6 ++----
 drivers/usb/host/ehci-st.c                     |  6 ++----
 drivers/usb/host/ehci-xilinx-of.c              |  6 ++----
 drivers/usb/host/fsl-mph-dr-of.c               |  5 ++---
 drivers/usb/host/isp116x-hcd.c                 |  7 +++----
 drivers/usb/host/isp1362-hcd.c                 |  6 ++----
 drivers/usb/host/octeon-hcd.c                  |  6 ++----
 drivers/usb/host/ohci-at91.c                   |  5 ++---
 drivers/usb/host/ohci-da8xx.c                  |  6 ++----
 drivers/usb/host/ohci-exynos.c                 |  6 ++----
 drivers/usb/host/ohci-nxp.c                    |  6 ++----
 drivers/usb/host/ohci-omap.c                   |  5 ++---
 drivers/usb/host/ohci-platform.c               |  6 ++----
 drivers/usb/host/ohci-ppc-of.c                 |  6 ++----
 drivers/usb/host/ohci-pxa27x.c                 |  5 ++---
 drivers/usb/host/ohci-s3c2410.c                |  5 ++---
 drivers/usb/host/ohci-sm501.c                  |  6 ++----
 drivers/usb/host/ohci-spear.c                  |  5 ++---
 drivers/usb/host/ohci-st.c                     |  6 ++----
 drivers/usb/host/oxu210hp-hcd.c                |  6 ++----
 drivers/usb/host/r8a66597-hcd.c                |  5 ++---
 drivers/usb/host/sl811-hcd.c                   |  5 ++---
 drivers/usb/host/uhci-grlib.c                  |  6 ++----
 drivers/usb/host/uhci-platform.c               |  6 ++----
 drivers/usb/host/xhci-histb.c                  |  6 ++----
 drivers/usb/host/xhci-mtk.c                    |  6 ++----
 drivers/usb/host/xhci-plat.c                   |  6 ++----
 drivers/usb/host/xhci-tegra.c                  |  6 ++----
 drivers/usb/isp1760/isp1760-if.c               |  6 ++----
 drivers/usb/misc/qcom_eud.c                    |  6 ++----
 drivers/usb/misc/usb3503.c                     |  6 ++----
 drivers/usb/renesas_usbhs/common.c             |  6 ++----
 drivers/usb/roles/intel-xhci-usb-role-switch.c |  6 ++----
 drivers/usb/typec/mux/gpio-sbu-mux.c           |  6 ++----
 drivers/usb/typec/mux/intel_pmc_mux.c          |  6 ++----
 drivers/usb/typec/qcom-pmic-typec.c            |  6 ++----
 drivers/usb/typec/tcpm/tcpci_mt6360.c          |  5 ++---
 drivers/usb/typec/tcpm/tcpci_mt6370.c          |  6 ++----
 drivers/usb/typec/tcpm/wcove.c                 |  6 ++----
 drivers/usb/typec/ucsi/ucsi_acpi.c             |  6 ++----
 drivers/usb/usbip/vhci_hcd.c                   |  6 ++----
 97 files changed, 199 insertions(+), 379 deletions(-)


base-commit: ac9a78681b921877518763ba0e89202254349d1b
-- 
2.39.2


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

* [PATCH 14/97] usb: dwc3-exynos: Convert to platform remove callback returning void
  2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
@ 2023-05-17 23:01 ` Uwe Kleine-König
  2023-05-23  0:20   ` Thinh Nguyen
  2023-05-17 23:01 ` [PATCH 47/97] usb: ehci-exynos: " Uwe Kleine-König
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Uwe Kleine-König @ 2023-05-17 23:01 UTC (permalink / raw)
  To: Thinh Nguyen, Greg Kroah-Hartman, Krzysztof Kozlowski
  Cc: Alim Akhtar, linux-usb, linux-arm-kernel, linux-samsung-soc,
	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 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() is
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 <u.kleine-koenig@pengutronix.de>
---
 drivers/usb/dwc3/dwc3-exynos.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
index 4be6a873bd07..f882dd647340 100644
--- a/drivers/usb/dwc3/dwc3-exynos.c
+++ b/drivers/usb/dwc3/dwc3-exynos.c
@@ -128,7 +128,7 @@ static int dwc3_exynos_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int dwc3_exynos_remove(struct platform_device *pdev)
+static void dwc3_exynos_remove(struct platform_device *pdev)
 {
 	struct dwc3_exynos	*exynos = platform_get_drvdata(pdev);
 	int i;
@@ -143,8 +143,6 @@ static int dwc3_exynos_remove(struct platform_device *pdev)
 
 	regulator_disable(exynos->vdd33);
 	regulator_disable(exynos->vdd10);
-
-	return 0;
 }
 
 static const struct dwc3_exynos_driverdata exynos5250_drvdata = {
@@ -234,7 +232,7 @@ static const struct dev_pm_ops dwc3_exynos_dev_pm_ops = {
 
 static struct platform_driver dwc3_exynos_driver = {
 	.probe		= dwc3_exynos_probe,
-	.remove		= dwc3_exynos_remove,
+	.remove_new	= dwc3_exynos_remove,
 	.driver		= {
 		.name	= "exynos-dwc3",
 		.of_match_table = exynos_dwc3_match,
-- 
2.39.2


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

* [PATCH 47/97] usb: ehci-exynos: Convert to platform remove callback returning void
  2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
  2023-05-17 23:01 ` [PATCH 14/97] usb: dwc3-exynos: " Uwe Kleine-König
@ 2023-05-17 23:01 ` Uwe Kleine-König
  2023-05-17 23:02 ` [PATCH 66/97] usb: ohci-exynos: " Uwe Kleine-König
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2023-05-17 23:01 UTC (permalink / raw)
  To: Alan Stern, Greg Kroah-Hartman, Krzysztof Kozlowski
  Cc: Alim Akhtar, linux-usb, linux-arm-kernel, linux-samsung-soc,
	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 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() is
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 <u.kleine-koenig@pengutronix.de>
---
 drivers/usb/host/ehci-exynos.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 47c9f06c3d84..20f8c0ec6810 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -230,7 +230,7 @@ static int exynos_ehci_probe(struct platform_device *pdev)
 	return err;
 }
 
-static int exynos_ehci_remove(struct platform_device *pdev)
+static void exynos_ehci_remove(struct platform_device *pdev)
 {
 	struct usb_hcd *hcd = platform_get_drvdata(pdev);
 	struct exynos_ehci_hcd *exynos_ehci = to_exynos_ehci(hcd);
@@ -244,8 +244,6 @@ static int exynos_ehci_remove(struct platform_device *pdev)
 	clk_disable_unprepare(exynos_ehci->clk);
 
 	usb_put_hcd(hcd);
-
-	return 0;
 }
 
 #ifdef CONFIG_PM
@@ -311,7 +309,7 @@ MODULE_DEVICE_TABLE(of, exynos_ehci_match);
 
 static struct platform_driver exynos_ehci_driver = {
 	.probe		= exynos_ehci_probe,
-	.remove		= exynos_ehci_remove,
+	.remove_new	= exynos_ehci_remove,
 	.shutdown	= usb_hcd_platform_shutdown,
 	.driver = {
 		.name	= "exynos-ehci",
-- 
2.39.2


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

* [PATCH 66/97] usb: ohci-exynos: Convert to platform remove callback returning void
  2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
  2023-05-17 23:01 ` [PATCH 14/97] usb: dwc3-exynos: " Uwe Kleine-König
  2023-05-17 23:01 ` [PATCH 47/97] usb: ehci-exynos: " Uwe Kleine-König
@ 2023-05-17 23:02 ` Uwe Kleine-König
  2023-05-17 23:02 ` [PATCH 72/97] usb: ohci-s3c2410: " Uwe Kleine-König
  2023-05-28 11:37 ` [PATCH 00/97] usb: " Greg Kroah-Hartman
  4 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2023-05-17 23:02 UTC (permalink / raw)
  To: Alan Stern, Greg Kroah-Hartman, Krzysztof Kozlowski
  Cc: Alim Akhtar, linux-usb, linux-arm-kernel, linux-samsung-soc,
	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 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() is
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 <u.kleine-koenig@pengutronix.de>
---
 drivers/usb/host/ohci-exynos.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
index 8af17c1ee5cc..ab31c459b32d 100644
--- a/drivers/usb/host/ohci-exynos.c
+++ b/drivers/usb/host/ohci-exynos.c
@@ -198,7 +198,7 @@ static int exynos_ohci_probe(struct platform_device *pdev)
 	return err;
 }
 
-static int exynos_ohci_remove(struct platform_device *pdev)
+static void exynos_ohci_remove(struct platform_device *pdev)
 {
 	struct usb_hcd *hcd = platform_get_drvdata(pdev);
 	struct exynos_ohci_hcd *exynos_ohci = to_exynos_ohci(hcd);
@@ -212,8 +212,6 @@ static int exynos_ohci_remove(struct platform_device *pdev)
 	clk_disable_unprepare(exynos_ohci->clk);
 
 	usb_put_hcd(hcd);
-
-	return 0;
 }
 
 static void exynos_ohci_shutdown(struct platform_device *pdev)
@@ -285,7 +283,7 @@ MODULE_DEVICE_TABLE(of, exynos_ohci_match);
 
 static struct platform_driver exynos_ohci_driver = {
 	.probe		= exynos_ohci_probe,
-	.remove		= exynos_ohci_remove,
+	.remove_new	= exynos_ohci_remove,
 	.shutdown	= exynos_ohci_shutdown,
 	.driver = {
 		.name	= "exynos-ohci",
-- 
2.39.2


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

* [PATCH 72/97] usb: ohci-s3c2410: Convert to platform remove callback returning void
  2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
                   ` (2 preceding siblings ...)
  2023-05-17 23:02 ` [PATCH 66/97] usb: ohci-exynos: " Uwe Kleine-König
@ 2023-05-17 23:02 ` Uwe Kleine-König
  2023-05-28 11:37 ` [PATCH 00/97] usb: " Greg Kroah-Hartman
  4 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2023-05-17 23:02 UTC (permalink / raw)
  To: Alan Stern, Krzysztof Kozlowski, Greg Kroah-Hartman
  Cc: Alim Akhtar, linux-usb, linux-arm-kernel, linux-samsung-soc,
	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 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() is
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 <u.kleine-koenig@pengutronix.de>
---
 drivers/usb/host/ohci-s3c2410.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
index 85a0a9ae0095..c5c9b4cbcb9a 100644
--- a/drivers/usb/host/ohci-s3c2410.c
+++ b/drivers/usb/host/ohci-s3c2410.c
@@ -329,7 +329,7 @@ static void s3c2410_hcd_oc(struct s3c2410_hcd_info *info, int port_oc)
  * the HCD's stop() method.  It is always called from a thread
  * context, normally "rmmod", "apmd", or something similar.
  */
-static int
+static void
 ohci_hcd_s3c2410_remove(struct platform_device *dev)
 {
 	struct usb_hcd *hcd = platform_get_drvdata(dev);
@@ -337,7 +337,6 @@ ohci_hcd_s3c2410_remove(struct platform_device *dev)
 	usb_remove_hcd(hcd);
 	s3c2410_stop_hc(dev);
 	usb_put_hcd(hcd);
-	return 0;
 }
 
 /*
@@ -458,7 +457,7 @@ MODULE_DEVICE_TABLE(of, ohci_hcd_s3c2410_dt_ids);
 
 static struct platform_driver ohci_hcd_s3c2410_driver = {
 	.probe		= ohci_hcd_s3c2410_probe,
-	.remove		= ohci_hcd_s3c2410_remove,
+	.remove_new	= ohci_hcd_s3c2410_remove,
 	.shutdown	= usb_hcd_platform_shutdown,
 	.driver		= {
 		.name	= "s3c2410-ohci",
-- 
2.39.2


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

* Re: [PATCH 14/97] usb: dwc3-exynos: Convert to platform remove callback returning void
  2023-05-17 23:01 ` [PATCH 14/97] usb: dwc3-exynos: " Uwe Kleine-König
@ 2023-05-23  0:20   ` Thinh Nguyen
  0 siblings, 0 replies; 8+ messages in thread
From: Thinh Nguyen @ 2023-05-23  0:20 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Thinh Nguyen, Greg Kroah-Hartman, Krzysztof Kozlowski,
	Alim Akhtar, linux-usb@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, kernel@pengutronix.de

On Thu, May 18, 2023, 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 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() is
> 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 <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/usb/dwc3/dwc3-exynos.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
> index 4be6a873bd07..f882dd647340 100644
> --- a/drivers/usb/dwc3/dwc3-exynos.c
> +++ b/drivers/usb/dwc3/dwc3-exynos.c
> @@ -128,7 +128,7 @@ static int dwc3_exynos_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int dwc3_exynos_remove(struct platform_device *pdev)
> +static void dwc3_exynos_remove(struct platform_device *pdev)
>  {
>  	struct dwc3_exynos	*exynos = platform_get_drvdata(pdev);
>  	int i;
> @@ -143,8 +143,6 @@ static int dwc3_exynos_remove(struct platform_device *pdev)
>  
>  	regulator_disable(exynos->vdd33);
>  	regulator_disable(exynos->vdd10);
> -
> -	return 0;
>  }
>  
>  static const struct dwc3_exynos_driverdata exynos5250_drvdata = {
> @@ -234,7 +232,7 @@ static const struct dev_pm_ops dwc3_exynos_dev_pm_ops = {
>  
>  static struct platform_driver dwc3_exynos_driver = {
>  	.probe		= dwc3_exynos_probe,
> -	.remove		= dwc3_exynos_remove,
> +	.remove_new	= dwc3_exynos_remove,
>  	.driver		= {
>  		.name	= "exynos-dwc3",
>  		.of_match_table = exynos_dwc3_match,
> -- 
> 2.39.2
> 

Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>

Thanks,
Thinh

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

* Re: [PATCH 00/97] usb: Convert to platform remove callback returning void
  2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
                   ` (3 preceding siblings ...)
  2023-05-17 23:02 ` [PATCH 72/97] usb: ohci-s3c2410: " Uwe Kleine-König
@ 2023-05-28 11:37 ` Greg Kroah-Hartman
  2023-05-28 11:39   ` Greg Kroah-Hartman
  4 siblings, 1 reply; 8+ messages in thread
From: Greg Kroah-Hartman @ 2023-05-28 11:37 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Peter Chen, Pawel Laszczak, Shawn Guo, Sascha Hauer,
	Thierry Reding, Jonathan Hunter, Chunfeng Yun, Christophe JAILLET,
	Prashanth K, Minas Harutyunyan, Thinh Nguyen, Krzysztof Kozlowski,
	Neil Armstrong, Kevin Hilman, Andy Gross, Bjorn Andersson,
	Patrice Chotard, Michal Simek, Linus Walleij, Andy Shevchenko,
	Joel Stanley, Benjamin Herrenschmidt, Lei YU, Neal Liu,
	Henry Tian, Cristian Birsan, Nicolas Ferre, Alexandre Belloni,
	Claudiu Beznea, Kevin Cernekee, Justin Chen, Al Cooper, Li Yang,
	Gaosheng Cui, Alan Stern, Aaro Koskinen, Paolo Abeni,
	Steven Rostedt (Google), Kalle Valo, Kang Chen, Shaomin Deng,
	Arnd Bergmann, Laurent Pinchart, Richard Leitner, Colin Ian King,
	Wolfram Sang, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Biju Das, Geert Uytterhoeven, Zheng Wang, Phil Edworthy,
	Herve Codina, Rob Herring, Wayne Chang, Haotien Hsu, Jim Lin,
	Tang Bin, Sing-Han Chen, Piyush Mehta, Avi Fishman, Tomer Maimon,
	Tali Perry, Darren Stevens, Alexander Stein, Olav Kongas,
	Artur Bujdoso, Vladimir Zapolskiy, Gustavo A. R. Silva,
	Mathias Nyman, Matthias Brugger, Rui Miguel Silva,
	Souradeep Chowdhury, Francesco Dolcini, Emanuele Ghidoli,
	Jean Delvare, Dongliang Mu, Hans de Goede, Heikki Krogerus,
	Guenter Roeck, Dan Carpenter, Samuel Čavoj, Valentina Manea,
	Shuah Khan, linux-usb, kernel, Roger Quadros, Aswath Govindraju,
	Fabio Estevam, NXP Linux Team, linux-arm-kernel, linux-tegra,
	Alim Akhtar, linux-samsung-soc, Jerome Brunet,
	Martin Blumenstingl, linux-amlogic, linux-omap, Konrad Dybcio,
	linux-arm-msm, Andrew Jeffery, linux-aspeed,
	Broadcom internal kernel review list, linuxppc-dev,
	linux-renesas-soc, Patrick Venture, Nancy Yuen, Benjamin Fair,
	openbmc, AngeloGioacchino Del Regno, linux-mediatek,
	Hongren Zheng

On Thu, May 18, 2023 at 01:01:02AM +0200, Uwe Kleine-König wrote:
> Hello,
> 
> this series convers the drivers below drivers/usb 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 drivers converted here already returned zero unconditionally in their
> .remove() callback, so converting them to .remove_new() is trivial.

All but 2 patches applied, as one was for a driver that wasn't in the
tree anymore, and the dwc2 patch didn't apply at all.

thanks,

greg k-h

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

* Re: [PATCH 00/97] usb: Convert to platform remove callback returning void
  2023-05-28 11:37 ` [PATCH 00/97] usb: " Greg Kroah-Hartman
@ 2023-05-28 11:39   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 8+ messages in thread
From: Greg Kroah-Hartman @ 2023-05-28 11:39 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Peter Chen, Pawel Laszczak, Shawn Guo, Sascha Hauer,
	Thierry Reding, Jonathan Hunter, Chunfeng Yun, Christophe JAILLET,
	Prashanth K, Minas Harutyunyan, Thinh Nguyen, Krzysztof Kozlowski,
	Neil Armstrong, Kevin Hilman, Andy Gross, Bjorn Andersson,
	Patrice Chotard, Michal Simek, Linus Walleij, Andy Shevchenko,
	Joel Stanley, Benjamin Herrenschmidt, Lei YU, Neal Liu,
	Henry Tian, Cristian Birsan, Nicolas Ferre, Alexandre Belloni,
	Claudiu Beznea, Kevin Cernekee, Justin Chen, Al Cooper, Li Yang,
	Gaosheng Cui, Alan Stern, Aaro Koskinen, Paolo Abeni,
	Steven Rostedt (Google), Kalle Valo, Kang Chen, Shaomin Deng,
	Arnd Bergmann, Laurent Pinchart, Richard Leitner, Colin Ian King,
	Wolfram Sang, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Biju Das, Geert Uytterhoeven, Zheng Wang, Phil Edworthy,
	Herve Codina, Rob Herring, Wayne Chang, Haotien Hsu, Jim Lin,
	Tang Bin, Sing-Han Chen, Piyush Mehta, Avi Fishman, Tomer Maimon,
	Tali Perry, Darren Stevens, Alexander Stein, Olav Kongas,
	Artur Bujdoso, Vladimir Zapolskiy, Gustavo A. R. Silva,
	Mathias Nyman, Matthias Brugger, Rui Miguel Silva,
	Souradeep Chowdhury, Francesco Dolcini, Emanuele Ghidoli,
	Jean Delvare, Dongliang Mu, Hans de Goede, Heikki Krogerus,
	Guenter Roeck, Dan Carpenter, Samuel Čavoj, Valentina Manea,
	Shuah Khan, linux-usb, kernel, Roger Quadros, Aswath Govindraju,
	Fabio Estevam, NXP Linux Team, linux-arm-kernel, linux-tegra,
	Alim Akhtar, linux-samsung-soc, Jerome Brunet,
	Martin Blumenstingl, linux-amlogic, linux-omap, Konrad Dybcio,
	linux-arm-msm, Andrew Jeffery, linux-aspeed,
	Broadcom internal kernel review list, linuxppc-dev,
	linux-renesas-soc, Patrick Venture, Nancy Yuen, Benjamin Fair,
	openbmc, AngeloGioacchino Del Regno, linux-mediatek,
	Hongren Zheng

On Sun, May 28, 2023 at 12:37:17PM +0100, Greg Kroah-Hartman wrote:
> On Thu, May 18, 2023 at 01:01:02AM +0200, Uwe Kleine-König wrote:
> > Hello,
> > 
> > this series convers the drivers below drivers/usb 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 drivers converted here already returned zero unconditionally in their
> > .remove() callback, so converting them to .remove_new() is trivial.
> 
> All but 2 patches applied, as one was for a driver that wasn't in the
> tree anymore, and the dwc2 patch didn't apply at all.

Oops, the xhci patches broke the build so I dropped them too.  Please
regenerate the series against the next linux-next that has these in
them and resend the remaining bits.

thanks,

greg k-h

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

end of thread, other threads:[~2023-05-28 11:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-17 23:01 [PATCH 00/97] usb: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-17 23:01 ` [PATCH 14/97] usb: dwc3-exynos: " Uwe Kleine-König
2023-05-23  0:20   ` Thinh Nguyen
2023-05-17 23:01 ` [PATCH 47/97] usb: ehci-exynos: " Uwe Kleine-König
2023-05-17 23:02 ` [PATCH 66/97] usb: ohci-exynos: " Uwe Kleine-König
2023-05-17 23:02 ` [PATCH 72/97] usb: ohci-s3c2410: " Uwe Kleine-König
2023-05-28 11:37 ` [PATCH 00/97] usb: " Greg Kroah-Hartman
2023-05-28 11:39   ` 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