]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: uss720: unify error handling in probe
authorOliver Neukum <oneukum@suse.com>
Wed, 4 Mar 2026 16:07:30 +0000 (17:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Mar 2026 14:00:11 +0000 (15:00 +0100)
There is a lot of code duplication.
Unify it.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Link: https://patch.msgid.link/20260304160734.1742200-1-oneukum@suse.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/uss720.c

index ec8bd968c4de5df05e2b087130eab733d3a37784..616c92ce5e1aaec35d56c868ea26277d7454b49c 100644 (file)
@@ -677,35 +677,32 @@ static int uss720_probe(struct usb_interface *intf,
        struct parport_uss720_private *priv;
        struct parport *pp;
        unsigned char reg;
-       int ret;
+       int ret = -ENODEV;
 
        dev_dbg(&intf->dev, "probe: vendor id 0x%x, device id 0x%x\n",
                le16_to_cpu(usbdev->descriptor.idVendor),
                le16_to_cpu(usbdev->descriptor.idProduct));
 
        /* our known interfaces have 3 alternate settings */
-       if (intf->num_altsetting != 3) {
-               usb_put_dev(usbdev);
-               return -ENODEV;
-       }
+       if (intf->num_altsetting != 3)
+               goto bail_out_early;
+
        ret = usb_set_interface(usbdev, intf->altsetting->desc.bInterfaceNumber, 2);
        dev_dbg(&intf->dev, "set interface result %d\n", ret);
 
        interface = intf->cur_altsetting;
 
-       if (interface->desc.bNumEndpoints < 2) {
-               usb_put_dev(usbdev);
-               return -ENODEV;
-       }
+       if (interface->desc.bNumEndpoints < 2)
+               goto bail_out_early;
 
        /*
         * Allocate parport interface 
         */
+       ret = -ENOMEM;
        priv = kzalloc_obj(struct parport_uss720_private);
-       if (!priv) {
-               usb_put_dev(usbdev);
-               return -ENOMEM;
-       }
+       if (!priv)
+               goto bail_out_early;
+
        priv->pp = NULL;
        priv->usbdev = usbdev;
        kref_init(&priv->ref_count);
@@ -752,6 +749,10 @@ probe_abort:
        kill_all_async_requests_priv(priv);
        kref_put(&priv->ref_count, destroy_priv);
        return -ENODEV;
+
+bail_out_early:
+       usb_put_dev(usbdev);
+       return ret;
 }
 
 static void uss720_disconnect(struct usb_interface *intf)