From eacffdf4909936e3e9a1cfacb64cbdeb6697cfc4 Mon Sep 17 00:00:00 2001 From: Vincent Dupont Date: Thu, 19 Jan 2017 16:05:48 +0100 Subject: [PATCH] xtimer: fix mutex unlocking in _mutex_timeout --- sys/xtimer/xtimer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/xtimer/xtimer.c b/sys/xtimer/xtimer.c index 475a769d2..06a5bfa65 100644 --- a/sys/xtimer/xtimer.c +++ b/sys/xtimer/xtimer.c @@ -233,8 +233,12 @@ static void _mutex_timeout(void *arg) mutex_thread_t *mt = (mutex_thread_t *)arg; mt->timeout = 1; + list_node_t *node = list_remove(&mt->mutex->queue, + (list_node_t *)&mt->thread->rq_entry); + if ((node != NULL) && (mt->mutex->queue.next == NULL)) { + mt->mutex->queue.next = MUTEX_LOCKED; + } sched_set_status(mt->thread, STATUS_PENDING); - list_remove(&mt->mutex->queue, (list_node_t *)&mt->thread->rq_entry); thread_yield_higher(); }