diff --git a/sched/wqueue/kwork_cancel.c b/sched/wqueue/kwork_cancel.c index 340d861ce5a..fd8055ea041 100644 --- a/sched/wqueue/kwork_cancel.c +++ b/sched/wqueue/kwork_cancel.c @@ -88,6 +88,12 @@ static int work_qcancel(FAR struct kwork_wqueue_s *wqueue, else { dq_rem((FAR dq_entry_t *)work, &wqueue->q); + + /* Semaphore count should be consistent with the number of + * work entries. + */ + + wqueue->sem.semcount--; } work->worker = NULL;