diff options
Diffstat (limited to 'payloads/libpayload/drivers/usb/usb.c')
-rw-r--r-- | payloads/libpayload/drivers/usb/usb.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/usb/usb.c b/payloads/libpayload/drivers/usb/usb.c index a6d5d43c23..62604a27ca 100644 --- a/payloads/libpayload/drivers/usb/usb.c +++ b/payloads/libpayload/drivers/usb/usb.c @@ -638,8 +638,15 @@ usb_detach_device(hci_t *controller, int devno) been called yet by the usb class driver */ if (controller->devices[devno]) { controller->devices[devno]->destroy (controller->devices[devno]); + if (controller->destroy_device) controller->destroy_device(controller, devno); + + free(controller->devices[devno]->descriptor); + controller->devices[devno]->descriptor = NULL; + free(controller->devices[devno]->configuration); + controller->devices[devno]->configuration = NULL; + /* Tear down the device itself *after* destroy_device() * has had a chance to interoogate it. */ free(controller->devices[devno]); |