aboutsummaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/libcommon/source/sniffer.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/firmware/libcommon/source/sniffer.c b/firmware/libcommon/source/sniffer.c
index 1c691af..0ca71a5 100644
--- a/firmware/libcommon/source/sniffer.c
+++ b/firmware/libcommon/source/sniffer.c
@@ -226,6 +226,14 @@ static void update_wt(uint8_t wi, uint8_t d)
*/
static struct msgb *usb_msg_alloc_hdr(uint8_t ep, uint8_t msg_class, uint8_t msg_type)
{
+ /* Only allocate message if not too many are already in the queue */
+ struct llist_head *head = usb_get_queue(SIMTRACE_USB_EP_CARD_DATAIN);
+ if (!head) {
+ return NULL;
+ }
+ if (llist_count(head) > 5) {
+ return NULL;
+ }
struct msgb *usb_msg = usb_buf_alloc(SIMTRACE_USB_EP_CARD_DATAIN);
if (!usb_msg) {
return NULL;