about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/pthread_mutex_lock.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
index 9c61aa75f6..ac770c5c00 100644
--- a/nptl/pthread_mutex_lock.c
+++ b/nptl/pthread_mutex_lock.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <errno.h>
 #include "pthreadP.h"
 #include <lowlevellock.h>
@@ -46,19 +47,14 @@ __pthread_mutex_lock (mutex)
 	    return EAGAIN;
 
 	  ++mutex->__data.__count;
-	}
-      else
-	{
-	  /* We have to get the mutex.  */
-	  LLL_MUTEX_LOCK (mutex->__data.__lock);
 
-	  /* Record the ownership.  */
-	  mutex->__data.__owner = id;
-	  mutex->__data.__count = 1;
-#ifndef NO_INCR
-	  ++mutex->__data.__nusers;
-#endif
+	  return 0;
 	}
+
+      /* We have to get the mutex.  */
+      LLL_MUTEX_LOCK (mutex->__data.__lock);
+
+      mutex->__data.__count = 1;
       break;
 
       /* Error checking mutex.  */
@@ -75,14 +71,16 @@ __pthread_mutex_lock (mutex)
     case PTHREAD_MUTEX_ADAPTIVE_NP:
       /* Normal mutex.  */
       LLL_MUTEX_LOCK (mutex->__data.__lock);
-      /* Record the ownership.  */
-      mutex->__data.__owner = id;
-#ifndef NO_INCR
-      ++mutex->__data.__nusers;
-#endif
       break;
     }
 
+  /* Record the ownership.  */
+  assert (mutex->__data.__owner == 0);
+  mutex->__data.__owner = id;
+#ifndef NO_INCR
+  ++mutex->__data.__nusers;
+#endif
+
   return 0;
 }
 #ifndef __pthread_mutex_lock