drivers: bluetooth: hci: Fix userchan insufficient buf cause dead-loop.
If insufficient buf for given event, will cause dead-loop. Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
This commit is contained in:
parent
feecb751b2
commit
137efd1c30
1 changed files with 4 additions and 2 deletions
|
@ -220,7 +220,7 @@ static void rx_thread(void *p1, void *p2, void *p3)
|
||||||
buf = get_rx(frame_start);
|
buf = get_rx(frame_start);
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
LOG_DBG("Discard adv report due to insufficient buf");
|
LOG_DBG("Discard adv report due to insufficient buf");
|
||||||
continue;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_tailroom = net_buf_tailroom(buf);
|
buf_tailroom = net_buf_tailroom(buf);
|
||||||
|
@ -229,7 +229,7 @@ static void rx_thread(void *p1, void *p2, void *p3)
|
||||||
LOG_ERR("Not enough space in buffer %zu/%zu",
|
LOG_ERR("Not enough space in buffer %zu/%zu",
|
||||||
buf_add_len, buf_tailroom);
|
buf_add_len, buf_tailroom);
|
||||||
net_buf_unref(buf);
|
net_buf_unref(buf);
|
||||||
continue;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
net_buf_add_mem(buf, frame_start + sizeof(packet_type), buf_add_len);
|
net_buf_add_mem(buf, frame_start + sizeof(packet_type), buf_add_len);
|
||||||
|
@ -237,6 +237,8 @@ static void rx_thread(void *p1, void *p2, void *p3)
|
||||||
LOG_DBG("Calling bt_recv(%p)", buf);
|
LOG_DBG("Calling bt_recv(%p)", buf);
|
||||||
|
|
||||||
bt_recv(buf);
|
bt_recv(buf);
|
||||||
|
|
||||||
|
next:
|
||||||
len -= decoded_len;
|
len -= decoded_len;
|
||||||
frame_start += decoded_len;
|
frame_start += decoded_len;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue