From 678164bf4e05a87dc1618717a9184bad87b6a0f5 Mon Sep 17 00:00:00 2001 From: wangchen Date: Mon, 26 May 2025 12:55:24 +0800 Subject: [PATCH] net_bufpool.c:when timeout value is zero,It don't break netlock Resolve some timing issues caused by calling net_breaklock to release netlock in the function NET_BUFPOOL_TRYALLOC Signed-off-by: wangchen --- net/utils/net_bufpool.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/utils/net_bufpool.c b/net/utils/net_bufpool.c index 70f0fba2094..89f4f9d3515 100644 --- a/net/utils/net_bufpool.c +++ b/net/utils/net_bufpool.c @@ -107,7 +107,15 @@ FAR void *net_bufpool_timedalloc(FAR struct net_bufpool_s *pool, DEBUGASSERT(pool->nodesize > 0); } - ret = net_sem_timedwait_uninterruptible(&pool->sem, timeout); + if (timeout == 0) + { + ret = nxsem_trywait(&pool->sem); + } + else + { + ret = net_sem_timedwait_uninterruptible(&pool->sem, timeout); + } + if (ret != OK) { return NULL;