usb: misc: usb3503: Fix logic in usb3503_init()
authorMichal Simek <michal.simek@xilinx.com>
Tue, 9 Feb 2021 12:32:19 +0000 (13:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Feb 2021 12:52:04 +0000 (13:52 +0100)
Based on
https://lore.kernel.org/linux-arm-kernel/YCJv59g3Tq2haDSa@kroah.com/
initialization should fail if any registration fails.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/a8547f6fe698014df08cad3bcc9c5d9a7137d8b8.1612873935.git.michal.simek@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/usb3503.c

index 48099c6..330f494 100644 (file)
@@ -409,13 +409,18 @@ static int __init usb3503_init(void)
        int err;
 
        err = i2c_add_driver(&usb3503_i2c_driver);
-       if (err != 0)
+       if (err) {
                pr_err("usb3503: Failed to register I2C driver: %d\n", err);
+               return err;
+       }
 
        err = platform_driver_register(&usb3503_platform_driver);
-       if (err != 0)
+       if (err) {
                pr_err("usb3503: Failed to register platform driver: %d\n",
                       err);
+               i2c_del_driver(&usb3503_i2c_driver);
+               return err;
+       }
 
        return 0;
 }