kernel: Check for uninitialized locks in mutex_trylock().

We already do this in mutex_lock() and variants.
This commit is contained in:
Augustin Cavalier
2019-03-15 10:59:48 -04:00
parent 88255e0890
commit b322554630
+4 -3
View File
@@ -795,10 +795,11 @@ _mutex_trylock(mutex* lock)
#if KDEBUG #if KDEBUG
InterruptsSpinLocker _(lock->lock); InterruptsSpinLocker _(lock->lock);
if (lock->holder <= 0) { if (lock->holder < 0) {
lock->holder = thread_get_current_thread_id(); lock->holder = thread_get_current_thread_id();
return B_OK; return B_OK;
} } else if (lock->holder == 0)
panic("_mutex_trylock(): using uninitialized lock %p", lock);
return B_WOULD_BLOCK; return B_WOULD_BLOCK;
#else #else
return mutex_trylock(lock); 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, panic("_mutex_lock(): double lock of %p by thread %" B_PRId32, lock,
lock->holder); lock->holder);
} else if (lock->holder == 0) } else if (lock->holder == 0)
panic("_mutex_lock(): using unitialized lock %p", lock); panic("_mutex_lock(): using uninitialized lock %p", lock);
#else #else
if ((lock->flags & MUTEX_FLAG_RELEASED) != 0) { if ((lock->flags & MUTEX_FLAG_RELEASED) != 0) {
lock->flags &= ~MUTEX_FLAG_RELEASED; lock->flags &= ~MUTEX_FLAG_RELEASED;