From 3a361bc62fbc27b002cabd9e2dcef54bffff2747 Mon Sep 17 00:00:00 2001 From: Jin Cheng Date: Thu, 6 Apr 2023 14:13:05 +0800 Subject: [PATCH] fixed the crash of LoadProhibited caused by taht the nodes are deleted during the traversal of the linked list --- components/bt/host/bluedroid/stack/btm/btm_acl.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/bt/host/bluedroid/stack/btm/btm_acl.c b/components/bt/host/bluedroid/stack/btm/btm_acl.c index cc28a946d5..db9e44a7f0 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_acl.c +++ b/components/bt/host/bluedroid/stack/btm/btm_acl.c @@ -509,12 +509,14 @@ void btm_acl_device_down (void) { tACL_CONN *p = NULL; BTM_TRACE_DEBUG ("btm_acl_device_down\n"); - for (list_node_t *p_node = list_begin(btm_cb.p_acl_db_list); p_node; p_node = list_next(p_node)) { - p = list_node(p_node); - if (p && p->in_use) { - BTM_TRACE_DEBUG ("hci_handle=%d HCI_ERR_HW_FAILURE \n", p->hci_handle ); - l2c_link_hci_disc_comp (p->hci_handle, HCI_ERR_HW_FAILURE); - } + for (list_node_t *p_node = list_begin(btm_cb.p_acl_db_list); p_node;) { + list_node_t *p_next = list_next(p_node); + p = list_node(p_node); + if (p && p->in_use) { + BTM_TRACE_DEBUG ("hci_handle=%d HCI_ERR_HW_FAILURE \n", p->hci_handle ); + l2c_link_hci_disc_comp (p->hci_handle, HCI_ERR_HW_FAILURE); + } + p_node = p_next; } } /*******************************************************************************