[PATCH] usb: mtu3: Convert to platform remove callback returning void

Greg Kroah-Hartman gregkh at linuxfoundation.org
Tue Jul 25 09:15:14 PDT 2023


On Sun, Jul 09, 2023 at 06:33:35PM +0200, 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 (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.
> 
> The function mtu3_remove() can only return a non-zero value if
> ssusb->dr_mode is neiter USB_DR_MODE_PERIPHERAL nor USB_DR_MODE_HOST nor
> USB_DR_MODE_OTG. In this case however the probe callback doesn't succeed
> and so the remove callback isn't called at all. So the code branch
> resulting in this error path can just be dropped and then mtu3_remove()
> be converted to return void trivially.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> ---
>  drivers/usb/mtu3/mtu3_plat.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)

This patch causes the following build error:

drivers/usb/mtu3/mtu3_plat.c: In function ‘mtu3_remove’:
drivers/usb/mtu3/mtu3_plat.c:460:9: error: enumeration value ‘USB_DR_MODE_UNKNOWN’ not handled in switch [-Werror=switch]
  460 |         switch (ssusb->dr_mode) {
      |         ^~~~~~
cc1: all warnings being treated as errors



More information about the Linux-mediatek mailing list