diff options
author | Torvald Riegel <triegel@redhat.com> | 2016-12-24 00:40:46 +0100 |
---|---|---|
committer | Torvald Riegel <triegel@redhat.com> | 2017-01-13 23:12:32 +0100 |
commit | 8f9450a0b7a9e78267e8ae1ab1000ebca08e473e (patch) | |
tree | bca2a0f01266faddbb985b5e3751b64f068fa565 /ChangeLog | |
parent | 8e31cafb268938729a1314806a924d73fb1991c5 (diff) | |
download | glibc-8f9450a0b7a9e78267e8ae1ab1000ebca08e473e.zip glibc-8f9450a0b7a9e78267e8ae1ab1000ebca08e473e.tar.gz glibc-8f9450a0b7a9e78267e8ae1ab1000ebca08e473e.tar.bz2 |
Add compiler barriers around modifications of the robust mutex list.
Any changes to the per-thread list of robust mutexes currently acquired as
well as the pending-operations entry are not simply sequential code but
basically concurrent with any actions taken by the kernel when it tries
to clean up after a crash. This is not quite like multi-thread concurrency
but more like signal-handler concurrency.
This patch fixes latent bugs by adding compiler barriers where necessary so
that it is ensured that the kernel crash handling sees consistent data.
This is meant to be easy to backport, so we do not use C11-style signal
fences yet.
* nptl/descr.h (ENQUEUE_MUTEX_BOTH, DEQUEUE_MUTEX): Add compiler
barriers and comments.
* nptl/pthread_mutex_lock.c (__pthread_mutex_lock_full): Likewise.
* nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Likewise.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1,5 +1,13 @@ 2016-01-13 Torvald Riegel <triegel@redhat.com> + * nptl/descr.h (ENQUEUE_MUTEX_BOTH, DEQUEUE_MUTEX): Add compiler + barriers and comments. + * nptl/pthread_mutex_lock.c (__pthread_mutex_lock_full): Likewise. + * nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise. + * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Likewise. + +2016-01-13 Torvald Riegel <triegel@redhat.com> + [BZ #19402] * sysdeps/nptl/fork.c (__libc_fork): Clear list of acquired robust mutexes. |