diff --git a/components/drivers/ipc/workqueue.c b/components/drivers/ipc/workqueue.c index ebe9598fbcb..30b779e4dfc 100644 --- a/components/drivers/ipc/workqueue.c +++ b/components/drivers/ipc/workqueue.c @@ -142,7 +142,9 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue, work->timeout_tick = rt_tick_get() + ticks; list_tmp = &(queue->delayed_list); - rt_list_for_each_entry(work_tmp, &(queue->delayed_list), list) + for (work_tmp = rt_list_entry(list_tmp->next, struct rt_work, list); + &work_tmp->list != list_tmp; + work_tmp = rt_list_entry(work_tmp->list.next, struct rt_work, list)) { if ((work_tmp->timeout_tick - work->timeout_tick) < RT_TICK_MAX / 2) {