Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb782072 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov
Browse files

Ignore LCB entries that migth have been released while queued

Function btm_send_pending_direct_conn() dequeues tL2C_LCB
entries from the conn_pending_q queue and calls the processing
function.
However, there is the possilility of a race condition
and releasing the entry by l2cu_release_lcb() before it is processed.
Now tL2C_LCB that are not in_use are ignored.

Bug: 27418154
Change-Id: I4b5fda605a60c8aebbf5587bb12dd74ac5d28f68
parent 4219a567
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -714,9 +714,11 @@ BOOLEAN btm_send_pending_direct_conn(void)
    BOOLEAN     rt = FALSE;

    p_req = (tBTM_BLE_CONN_REQ*)fixed_queue_try_dequeue(btm_cb.ble_ctr_cb.conn_pending_q);
    if (p_req != NULL)
    {
        rt = l2cble_init_direct_conn((tL2C_LCB *)(p_req->p_param));
    if (p_req != NULL) {
        tL2C_LCB *p_lcb = (tL2C_LCB *)(p_req->p_param);
        /* Ignore entries that might have been released while queued. */
        if (p_lcb->in_use)
            rt = l2cble_init_direct_conn(p_lcb);
        osi_free(p_req);
    }