From 6f02fa2114ba87d6184f6785e2c60fa75b953e3c Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 21 May 2021 23:17:40 +0200 Subject: [PATCH] Fix mutex locking. --- src/omv/common/mutex.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/omv/common/mutex.c b/src/omv/common/mutex.c index 46abd07da..aec712c4d 100644 --- a/src/omv/common/mutex.c +++ b/src/omv/common/mutex.c @@ -38,13 +38,12 @@ static void _mutex_lock(omv_mutex_t *mutex, uint32_t tid, bool blocking) } while (mutex->tid != tid && blocking); #else do { - // Attempt exclusive read - while (__LDREXW(&mutex->lock) != 0); - - // Attempt to lock mutex - if(__STREXW(1, &mutex->lock) == 0) { - // Set TID if mutex is locked - mutex->tid = tid; + // Attempt to lock the mutex + if (__LDREXW(&mutex->lock) == 0) { + if (__STREXW(1, &mutex->lock) == 0) { + // Set TID if mutex is locked + mutex->tid = tid; + } } } while (mutex->tid != tid && blocking); #endif