Merge pull request #11992 from JulianHolzwarth/pr/xtimer_mutex_lock_timeout/first_fix

sys/xtimer/xtimer.c: _mutex_timeout() bug fix for race condition
This commit is contained in:
MichelRottleuthner 2019-12-04 10:43:20 +01:00 committed by GitHub
commit 272079c89e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -252,6 +252,8 @@ static void _mutex_timeout(void *arg)
mutex_thread_t *mt = (mutex_thread_t *)arg; mutex_thread_t *mt = (mutex_thread_t *)arg;
if (mt->mutex->queue.next != MUTEX_LOCKED &&
mt->mutex->queue.next != NULL) {
mt->timeout = 1; mt->timeout = 1;
list_node_t *node = list_remove(&mt->mutex->queue, list_node_t *node = list_remove(&mt->mutex->queue,
(list_node_t *)&mt->thread->rq_entry); (list_node_t *)&mt->thread->rq_entry);
@ -266,6 +268,7 @@ static void _mutex_timeout(void *arg)
sched_switch(mt->thread->priority); sched_switch(mt->thread->priority);
return; return;
} }
}
irq_restore(irqstate); irq_restore(irqstate);
} }