mirror of
https://github.com/apache/nuttx.git
synced 2026-05-20 12:33:27 +08:00
sched/event: fix event bug after csection was removed
Change:
Replace list_delete_init() with list_delete() in nxevent_post.
Reason:
PR 16933 removed list_delete() in nxevent_wait() and allow other task
to preempt event-wait thread after list_add_tail() option, the even-post thread
can preempt it at this time and do list_delete_init().
The problem is that list_delete_init() will make list_in_list() return true, so
DEBUGASSERT(!list_in_list(&(wait->node))); will fail in nxevent_wait() after the event-wait thread
returns.
Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
This commit is contained in:
committed by
Xiang Xiao
parent
e7ecf19a68
commit
c0d7269840
@@ -104,7 +104,7 @@ int nxevent_post(FAR nxevent_t *event, nxevent_mask_t events,
|
||||
if ((!waitall && ((wait->expect & event->events) != 0)) ||
|
||||
(waitall && ((wait->expect & event->events) == wait->expect)))
|
||||
{
|
||||
list_delete_init(&wait->node);
|
||||
list_delete(&wait->node);
|
||||
|
||||
ret = nxsem_post(&wait->sem);
|
||||
if (ret < 0)
|
||||
|
||||
Reference in New Issue
Block a user