diff --git a/sched/mqueue/mq_timedreceive.c b/sched/mqueue/mq_timedreceive.c index 1d1c71aded5..eb1822f7e4f 100644 --- a/sched/mqueue/mq_timedreceive.c +++ b/sched/mqueue/mq_timedreceive.c @@ -258,11 +258,13 @@ ssize_t mq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen, if (result != OK) { - set_errno(result); irqrestore(saved_state); sched_unlock(); + wd_delete(rtcb->waitdog); rtcb->waitdog = NULL; + + set_errno(result); return ERROR; } diff --git a/sched/mqueue/mq_timedsend.c b/sched/mqueue/mq_timedsend.c index 31855e6401f..929a5bc6104 100644 --- a/sched/mqueue/mq_timedsend.c +++ b/sched/mqueue/mq_timedsend.c @@ -351,7 +351,8 @@ errout_with_irqsave: errout_with_mqmsg: mq_msgfree(mqmsg); - set_errno(result); sched_unlock(); + + set_errno(result); return ERROR; } diff --git a/sched/mqueue/mq_waitirq.c b/sched/mqueue/mq_waitirq.c index 76d2e236d78..e22f67d2bb3 100644 --- a/sched/mqueue/mq_waitirq.c +++ b/sched/mqueue/mq_waitirq.c @@ -143,4 +143,3 @@ void mq_waitirq(FAR struct tcb_s *wtcb, int errcode) irqrestore(saved_state); } -