Hi Uwe, > From: Uwe Kleine-König, Sent: Thursday, May 18, 2023 8:02 AM > > 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@xxxxxxxxxxxxxx> > --- > drivers/usb/host/xhci-plat.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c > index b0c8e8efc43b..523e3843db5e 100644 > --- a/drivers/usb/host/xhci-plat.c > +++ b/drivers/usb/host/xhci-plat.c > @@ -399,7 +399,7 @@ static int xhci_generic_plat_probe(struct platform_device *pdev) > return xhci_plat_probe(pdev, sysdev, priv_match); > } > > -int xhci_plat_remove(struct platform_device *dev) > +void xhci_plat_remove(struct platform_device *dev) We should change the prototype in the xhci-plat.h. Otherwise the following build error happens: --- drivers/usb/host/xhci-plat.c:398:6: error: conflicting types for 'xhci_plat_remove'; have 'void(struct platform_device *)' 398 | void xhci_plat_remove(struct platform_device *dev) | ^~~~~~~~~~~~~~~~ In file included from drivers/usb/host/xhci-plat.c:25: drivers/usb/host/xhci-plat.h:28:5: note: previous declaration of 'xhci_plat_remove' with type 'int(struct platform_device *)' 28 | int xhci_plat_remove(struct platform_device *dev); | ^~~~~~~~~~~~~~~~ In file included from ./include/linux/linkage.h:7, from ./include/linux/kernel.h:17, from ./include/linux/clk.h:13, from drivers/usb/host/xhci-plat.c:11: drivers/usb/host/xhci-plat.c:430:19: error: conflicting types for 'xhci_plat_remove'; have 'void(struct platform_device *)' --- Since the xhci-rcar.c uses xhci_plat_remove(), we should change the xhci-rcar.c in this patch too, I think. Best regards, Yoshihiro Shimoda > { > struct usb_hcd *hcd = platform_get_drvdata(dev); > struct xhci_hcd *xhci = hcd_to_xhci(hcd); > @@ -430,8 +430,6 @@ int xhci_plat_remove(struct platform_device *dev) > pm_runtime_disable(&dev->dev); > pm_runtime_put_noidle(&dev->dev); > pm_runtime_set_suspended(&dev->dev); > - > - return 0; > } > EXPORT_SYMBOL_GPL(xhci_plat_remove); > > @@ -530,7 +528,7 @@ MODULE_DEVICE_TABLE(acpi, usb_xhci_acpi_match); > > static struct platform_driver usb_generic_xhci_driver = { > .probe = xhci_generic_plat_probe, > - .remove = xhci_plat_remove, > + .remove_new = xhci_plat_remove, > .shutdown = usb_hcd_platform_shutdown, > .driver = { > .name = "xhci-hcd", > -- > 2.39.2