diff --git a/sys/sema/sema.c b/sys/sema/sema.c index 53962a1e72e874f6a7a165c5204bbc316ed17c6b..b9ae892a97324042b99c3ff4d44d7cc4e396fb4b 100644 --- a/sys/sema/sema.c +++ b/sys/sema/sema.c @@ -102,11 +102,12 @@ int sema_wait_timed_msg(sema_t *sema, uint64_t timeout, msg_t *msg) restoreIRQ(old_state); msg_receive(msg); - + old_state = disableIRQ(); if (timeout != 0) { xtimer_remove(&timeout_timer); } priority_queue_remove(&sema->queue, &n); + restoreIRQ(old_state); if (msg->content.ptr != (void *)sema) { return -EAGAIN; }