]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Bluetooth: btusb: clean up probe error handling
authorJohan Hovold <johan@kernel.org>
Thu, 4 Jun 2026 06:37:40 +0000 (08:37 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 11 Jun 2026 18:24:40 +0000 (14:24 -0400)
Clean up probe error handling by using dedicated error labels with an
"err" prefix.

Note that the endpoint lookup helper returns -ENXIO when endpoints are
missing which is functionally equivalent to returning -ENODEV.

Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btusb.c

index 843c649f80533bcc39a05817fba085dc226b65ab..08c0a99a62c5cb527327d6ea67078b4d5d14edf9 100644 (file)
@@ -4119,10 +4119,8 @@ static int btusb_probe(struct usb_interface *intf,
 
        err = usb_find_common_endpoints(intf->cur_altsetting, &data->bulk_rx_ep,
                                        &data->bulk_tx_ep, &data->intr_ep, NULL);
-       if (err) {
-               kfree(data);
-               return -ENODEV;
-       }
+       if (err)
+               goto err_free_data;
 
        if (id->driver_info & BTUSB_AMP) {
                data->cmdreq_type = USB_TYPE_CLASS | 0x01;
@@ -4178,8 +4176,8 @@ static int btusb_probe(struct usb_interface *intf,
 
        hdev = hci_alloc_dev_priv(priv_size);
        if (!hdev) {
-               kfree(data);
-               return -ENOMEM;
+               err = -ENOMEM;
+               goto err_free_data;
        }
 
        hdev->bus = HCI_USB;
@@ -4193,7 +4191,7 @@ static int btusb_probe(struct usb_interface *intf,
                                        GPIOD_OUT_LOW);
        if (IS_ERR(reset_gpio)) {
                err = PTR_ERR(reset_gpio);
-               goto out_free_dev;
+               goto err_free_hdev;
        } else if (reset_gpio) {
                data->reset_gpio = reset_gpio;
        }
@@ -4208,7 +4206,7 @@ static int btusb_probe(struct usb_interface *intf,
 
        err = btusb_config_oob_wake(hdev);
        if (err)
-               goto out_free_dev;
+               goto err_put_reset;
 
        /* Marvell devices may need a specific chip configuration */
        if (id->driver_info & BTUSB_MARVELL && data->oob_wake_irq) {
@@ -4466,11 +4464,14 @@ err_disable_wakeup:
                device_init_wakeup(&data->udev->dev, false);
                free_irq(data->oob_wake_irq, data);
        }
-out_free_dev:
+err_put_reset:
        if (data->reset_gpio)
                gpiod_put(data->reset_gpio);
+err_free_hdev:
        hci_free_dev(hdev);
+err_free_data:
        kfree(data);
+
        return err;
 }