From d9a9c0cc9d229b88af3cff0a3c3cfd0d83e1103b Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Mon, 29 Jan 2024 15:08:44 +0800 Subject: [PATCH] Fixed xQueueSemaphoreTask assert when deinit host during scan --- components/bt/host/bluedroid/hci/hci_hal_h4.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/components/bt/host/bluedroid/hci/hci_hal_h4.c b/components/bt/host/bluedroid/hci/hci_hal_h4.c index a909361536..4c6e09af34 100644 --- a/components/bt/host/bluedroid/hci/hci_hal_h4.c +++ b/components/bt/host/bluedroid/hci/hci_hal_h4.c @@ -134,15 +134,20 @@ static bool hci_hal_env_init(const hci_hal_callbacks_t *upper_callbacks, osi_thr static void hci_hal_env_deinit(void) { - fixed_queue_free(hci_hal_env.rx_q, osi_free_func); + fixed_queue_t *rx_q = hci_hal_env.rx_q; + struct pkt_queue *adv_rpt_q = hci_hal_env.adv_rpt_q; + struct osi_event *upstream_data_ready = hci_hal_env.upstream_data_ready; + hci_hal_env.rx_q = NULL; - - pkt_queue_destroy(hci_hal_env.adv_rpt_q, NULL); hci_hal_env.adv_rpt_q = NULL; - - osi_event_delete(hci_hal_env.upstream_data_ready); hci_hal_env.upstream_data_ready = NULL; + fixed_queue_free(rx_q, osi_free_func); + + pkt_queue_destroy(adv_rpt_q, NULL); + + osi_event_delete(upstream_data_ready); + #if (BLE_ADV_REPORT_FLOW_CONTROL == TRUE) hci_hal_env.cmd_buf_in_use = true; osi_alarm_cancel(hci_hal_env.adv_flow_monitor);