From b3225546301bd411c50c43105b144690e84c1bd5 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 15 Mar 2019 10:59:48 -0400 Subject: [PATCH] kernel: Check for uninitialized locks in mutex_trylock(). We already do this in mutex_lock() and variants. --- src/system/kernel/locks/lock.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/locks/lock.cpp b/src/system/kernel/locks/lock.cpp index 33a1d7e632..50e718edd2 100644 --- a/src/system/kernel/locks/lock.cpp +++ b/src/system/kernel/locks/lock.cpp @@ -795,10 +795,11 @@ _mutex_trylock(mutex* lock) #if KDEBUG InterruptsSpinLocker _(lock->lock); - if (lock->holder <= 0) { + if (lock->holder < 0) { lock->holder = thread_get_current_thread_id(); return B_OK; - } + } else if (lock->holder == 0) + panic("_mutex_trylock(): using uninitialized lock %p", lock); return B_WOULD_BLOCK; #else return mutex_trylock(lock); @@ -828,7 +829,7 @@ _mutex_lock_with_timeout(mutex* lock, uint32 timeoutFlags, bigtime_t timeout) panic("_mutex_lock(): double lock of %p by thread %" B_PRId32, lock, lock->holder); } else if (lock->holder == 0) - panic("_mutex_lock(): using unitialized lock %p", lock); + panic("_mutex_lock(): using uninitialized lock %p", lock); #else if ((lock->flags & MUTEX_FLAG_RELEASED) != 0) { lock->flags &= ~MUTEX_FLAG_RELEASED;