diff options
| author | sakumisu <[email protected]> | 2026-04-23 19:45:43 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2026-04-23 19:45:43 +0800 |
| commit | 65e21ae06b07fe068b86fea547ac80bbf5489f7b (patch) | |
| tree | 1645213ffa85cd60daded385344d5530f269c9ff | |
| parent | 633be12577792dedc682328e8a049f6c700431c8 (diff) | |
fix(class/hub): clear mq &sem at deinit
Signed-off-by: sakumisu <[email protected]>
| -rw-r--r-- | class/hub/usbh_hub.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/class/hub/usbh_hub.c b/class/hub/usbh_hub.c index f3cdbbb7..5538de86 100644 --- a/class/hub/usbh_hub.c +++ b/class/hub/usbh_hub.c @@ -705,7 +705,6 @@ static void usbh_hub_thread(CONFIG_USB_OSAL_THREAD_SET_ARGV) } usb_hc_deinit(bus); usb_osal_mq_delete(bus->hub_mq); - bus->hub_mq = NULL; usb_osal_sem_give(bus->hub_sem); usb_osal_thread_delete(NULL); } @@ -756,9 +755,13 @@ int usbh_hub_deinitialize(struct usbh_bus *bus) if (!bus->hub_mq || !bus->hub_sem) { return -USB_ERR_INVAL; } + usb_osal_mq_send(bus->hub_mq, (uintptr_t)NULL); usb_osal_sem_take(bus->hub_sem, USB_OSAL_WAITING_FOREVER); usb_osal_sem_delete(bus->hub_sem); + bus->hub_mq = NULL; + bus->hub_sem = NULL; + bus->event_handler(bus->busid, USB_HUB_INDEX_ANY, USB_HUB_PORT_ANY, USB_INTERFACE_ANY, USBH_EVENT_DEINIT); return 0; |
