This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.10-211-g7b7f43b
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 26 Jul 2009 20:01:29 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.10-211-g7b7f43b
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 7b7f43bed134db6a0da34282fffcbf0af10d4613 (commit)
from aa7492d20e5a2cef54dab7b41f534048b3eca479 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7b7f43bed134db6a0da34282fffcbf0af10d4613
commit 7b7f43bed134db6a0da34282fffcbf0af10d4613
Author: Ulrich Drepper <drepper@redhat.com>
Date: Sun Jul 26 13:00:04 2009 -0700
Memory ordering in pthread_mutex_{,timed}lock.
All commits should have happened before the mutex lock is taken.
Therefore use the _rel variant of the cmpxchg atomic op.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index cb9ec53..2221121 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,10 @@
+2009-07-26 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10418]
+ * pthread_mutex_lock.c (pthread_mutex_lock): Use _rel instead of of
+ _acq variants of cmpxchg.
+ * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
+
2009-07-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/x86_64/configure.in: New file.
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
index 406e588..a0ff881 100644
--- a/nptl/pthread_mutex_lock.c
+++ b/nptl/pthread_mutex_lock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -160,7 +160,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
#endif
newval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
newval, oldval);
if (newval != oldval)
@@ -285,7 +285,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
#ifdef NO_INCR
newval |= FUTEX_WAITERS;
#endif
- oldval = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ oldval = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
newval, 0);
if (oldval != 0)
@@ -420,7 +420,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
oldprio = ceiling;
oldval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
#ifdef NO_INCR
ceilval | 2,
#else
@@ -434,7 +434,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
do
{
oldval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
ceilval | 2,
ceilval | 1);
@@ -445,7 +445,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
lll_futex_wait (&mutex->__data.__lock, ceilval | 2,
PTHREAD_MUTEX_PSHARED (mutex));
}
- while (atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ while (atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
ceilval | 2, ceilval)
!= ceilval);
}
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index 8d0db79..2c6ff11 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -126,7 +126,7 @@ pthread_mutex_timedlock (mutex, abstime)
int newval = id | (oldval & FUTEX_WAITERS);
newval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
newval, oldval);
if (newval != oldval)
{
@@ -246,7 +246,7 @@ pthread_mutex_timedlock (mutex, abstime)
}
}
- oldval = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ oldval = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
id, 0);
if (oldval != 0)
@@ -404,7 +404,7 @@ pthread_mutex_timedlock (mutex, abstime)
oldprio = ceiling;
oldval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
ceilval | 1, ceilval);
if (oldval == ceilval)
@@ -413,7 +413,7 @@ pthread_mutex_timedlock (mutex, abstime)
do
{
oldval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ = atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
ceilval | 2,
ceilval | 1);
@@ -456,7 +456,7 @@ pthread_mutex_timedlock (mutex, abstime)
PTHREAD_MUTEX_PSHARED (mutex));
}
}
- while (atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ while (atomic_compare_and_exchange_val_rel (&mutex->__data.__lock,
ceilval | 2, ceilval)
!= ceilval);
}
-----------------------------------------------------------------------
Summary of changes:
nptl/ChangeLog | 7 +++++++
nptl/pthread_mutex_lock.c | 12 ++++++------
nptl/pthread_mutex_timedlock.c | 12 ++++++------
3 files changed, 19 insertions(+), 12 deletions(-)
hooks/post-receive
--
GNU C Library master sources