[haiku-commits] haiku: hrev52993 - src/system/kernel/locks

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 15 Mar 2019 11:04:12 -0400 (EDT)

hrev52993 adds 1 changeset to branch 'master'
old head: 88255e0890e158a954555bfbe4b1cc91d7261e48
new head: b3225546301bd411c50c43105b144690e84c1bd5
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=b3225546301b+%5E88255e0890e1

----------------------------------------------------------------------------

b3225546301b: kernel: Check for uninitialized locks in mutex_trylock().
  
  We already do this in mutex_lock() and variants.

                              [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev52993
Commit:      b3225546301bd411c50c43105b144690e84c1bd5
URL:         https://git.haiku-os.org/haiku/commit/?id=b3225546301b
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Fri Mar 15 14:59:48 2019 UTC

----------------------------------------------------------------------------

1 file changed, 4 insertions(+), 3 deletions(-)
src/system/kernel/locks/lock.cpp | 7 ++++---

----------------------------------------------------------------------------

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;


Other related posts:

  • » [haiku-commits] haiku: hrev52993 - src/system/kernel/locks - waddlesplash