From 18d33b6393ad66f45c31ee2d69262c5816850ae2 Mon Sep 17 00:00:00 2001 From: hujun5 Date: Fri, 17 Jan 2025 08:54:58 +0800 Subject: [PATCH] sim: fix regression from https://github.com/apache/nuttx/pull/14623 reason: work_timer_expiry may be called in thread context Signed-off-by: hujun5 --- sched/wqueue/kwork_queue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sched/wqueue/kwork_queue.c b/sched/wqueue/kwork_queue.c index 157094f075d4c..401ccba264960 100644 --- a/sched/wqueue/kwork_queue.c +++ b/sched/wqueue/kwork_queue.c @@ -68,9 +68,8 @@ static void work_timer_expiry(wdparm_t arg) { FAR struct work_s *work = (FAR struct work_s *)arg; - DEBUGASSERT(up_interrupt_context()); - irqstate_t flags = spin_lock_irqsave(&work->wq->lock); + sched_lock(); /* We have being canceled */ @@ -80,6 +79,7 @@ static void work_timer_expiry(wdparm_t arg) } spin_unlock_irqrestore(&work->wq->lock, flags); + sched_unlock(); } static bool work_is_canceling(FAR struct kworker_s *kworkers, int nthreads,