diff --git a/payloads/libpayload/drivers/usb/usb.c b/payloads/libpayload/drivers/usb/usb.c index 99b65e03f2..d5514f980c 100644 --- a/payloads/libpayload/drivers/usb/usb.c +++ b/payloads/libpayload/drivers/usb/usb.c @@ -487,6 +487,7 @@ usb_attach_device(hci_t *controller, int hubaddress, int port, int speed) usbdev_t *newdev_t = controller->devices[newdev]; // determine responsible driver - current done in set_address newdev_t->init (newdev_t); - return newdev; + /* init() may have called usb_detach_device() yet, so check */ + return controller->devices[newdev] ? newdev : -1; }