diff --git a/sched/event/event_post.c b/sched/event/event_post.c index 3efc3f7d64d..6b6cf6ec0ad 100644 --- a/sched/event/event_post.c +++ b/sched/event/event_post.c @@ -104,7 +104,11 @@ int nxevent_post(FAR nxevent_t *event, nxevent_mask_t events, /* Stop timeout watchdog */ - wd_cancel(&wtcb->waitdog); + if (WDOG_ISACTIVE(&wtcb->waitdog)) + { + wd_cancel(&wtcb->waitdog); + } + wtcb->waitobj = NULL; /* Make task ready-to-run */ diff --git a/sched/mqueue/mq_rcvinternal.c b/sched/mqueue/mq_rcvinternal.c index dd3c6c42003..9cab67c3a91 100644 --- a/sched/mqueue/mq_rcvinternal.c +++ b/sched/mqueue/mq_rcvinternal.c @@ -253,7 +253,10 @@ void nxmq_notify_receive(FAR struct mqueue_inode_s *msgq) DEBUGASSERT(btcb != NULL); - wd_cancel(&btcb->waitdog); + if (WDOG_ISACTIVE(&btcb->waitdog)) + { + wd_cancel(&btcb->waitdog); + } msgq->cmn.nwaitnotfull--; diff --git a/sched/mqueue/mq_sndinternal.c b/sched/mqueue/mq_sndinternal.c index ac7bfe12e57..6c3908a9a7a 100644 --- a/sched/mqueue/mq_sndinternal.c +++ b/sched/mqueue/mq_sndinternal.c @@ -286,7 +286,10 @@ void nxmq_notify_send(FAR struct mqueue_inode_s *msgq) DEBUGASSERT(btcb); - wd_cancel(&btcb->waitdog); + if (WDOG_ISACTIVE(&btcb->waitdog)) + { + wd_cancel(&btcb->waitdog); + } msgq->cmn.nwaitnotempty--; diff --git a/sched/semaphore/sem_post.c b/sched/semaphore/sem_post.c index bb054d8341d..64db8f946db 100644 --- a/sched/semaphore/sem_post.c +++ b/sched/semaphore/sem_post.c @@ -220,7 +220,10 @@ int nxsem_post_slow(FAR sem_t *sem) /* Stop the watchdog timer */ - wd_cancel(&stcb->waitdog); + if (WDOG_ISACTIVE(&stcb->waitdog)) + { + wd_cancel(&stcb->waitdog); + } /* Indicate that the wait is over. */ diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c index 174602477f8..000bd1e9913 100644 --- a/sched/signal/sig_dispatch.c +++ b/sched/signal/sig_dispatch.c @@ -587,7 +587,10 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info, } sigemptyset(&stcb->sigwaitmask); - wd_cancel(&stcb->waitdog); + if (WDOG_ISACTIVE(&stcb->waitdog)) + { + wd_cancel(&stcb->waitdog); + } /* Remove the task from waiting list */ @@ -650,7 +653,10 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info, } sigemptyset(&stcb->sigwaitmask); - wd_cancel(&stcb->waitdog); + if (WDOG_ISACTIVE(&stcb->waitdog)) + { + wd_cancel(&stcb->waitdog); + } /* Remove the task from waiting list */