This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] pthread_mutex_unlock: fix wrong assertion with lock elision (bug#19515)
- From: Aurelien Jarno <aurelien at aurel32 dot net>
- To: libc-alpha at sourceware dot org
- Cc: Aurelien Jarno <aurelien at aurel32 dot net>
- Date: Sat, 23 Jan 2016 21:27:55 +0100
- Subject: [PATCH] pthread_mutex_unlock: fix wrong assertion with lock elision (bug#19515)
- Authentication-results: sourceware.org; auth=none
Commit e8c659d7 slightly changed the mutex type to store the elision
FLAG via the ELISION. It means the mutex type should no be accessed
using PTHREAD_MUTEX_TYPE. One path has been forgotten in this patch,
causing the assert to wrongly trigger when lock elision is enabled
and available. Fix that.
2016-01-23 Aurelien Jarno <aurelien@aurel32.net>
[BZ #19515]
* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
Use PTHREAD_MUTEX_TYPE to get the mutex type.
---
ChangeLog | 6 ++++++
nptl/pthread_mutex_unlock.c | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 9418e26..5f86942 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-23 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #19515]
+ * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
+ Use PTHREAD_MUTEX_TYPE to get the mutex type.
+
2016-01-22 Paul E. Murphy <murphyp@linux.vnet.ibm.com>
* nptl/tst-setuid3.c (is_invalid_barrier_ret): New function.
diff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c
index 334ce38..98571ae 100644
--- a/nptl/pthread_mutex_unlock.c
+++ b/nptl/pthread_mutex_unlock.c
@@ -82,7 +82,7 @@ __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr)
else
{
/* Error checking mutex. */
- assert (type == PTHREAD_MUTEX_ERRORCHECK_NP);
+ assert (PTHREAD_MUTEX_TYPE (mutex) == PTHREAD_MUTEX_ERRORCHECK_NP);
if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)
|| ! lll_islocked (mutex->__data.__lock))
return EPERM;
--
2.7.0.rc3