--- x/drivers/bluetooth/btusb.c +++ y/drivers/bluetooth/btusb.c @@ -4269,6 +4269,11 @@ static void btusb_disconnect(struct usb_ hci_unregister_dev(hdev); + if (data->oob_wake_irq) + device_init_wakeup(&data->udev->dev, false); + if (data->reset_gpio) + gpiod_put(data->reset_gpio); + if (intf == data->intf) { if (data->isoc) usb_driver_release_interface(&btusb_driver, data->isoc); @@ -4284,12 +4289,6 @@ static void btusb_disconnect(struct usb_ usb_driver_release_interface(&btusb_driver, data->isoc); } - if (data->oob_wake_irq) - device_init_wakeup(&data->udev->dev, false); - - if (data->reset_gpio) - gpiod_put(data->reset_gpio); - hci_free_dev(hdev); }