kernel: Fix negative mutex lock_count value

If you try to unlock an unlocked mutex, it will incorrectly
succeeds and decreases the lock count to -1.

Fixes #36572

Signed-off-by: Chih Hung Yu <chyu313@gmail.com>
This commit is contained in:
Chih Hung Yu 2021-06-30 14:40:16 +08:00 committed by Anas Nashif
commit 0ef77d4ea4

View file

@ -230,7 +230,7 @@ int z_impl_k_mutex_unlock(struct k_mutex *mutex)
* If we are the owner and count is greater than 1, then decrement
* the count and return and keep current thread as the owner.
*/
if (mutex->lock_count - 1U != 0U) {
if (mutex->lock_count > 1U) {
mutex->lock_count--;
goto k_mutex_unlock_return;
}