]> git.ipfire.org Git - thirdparty/glibc.git/commit
Add compiler barriers around modifications of the robust mutex list for pthread_mutex...
authorStefan Liebler <stli@linux.ibm.com>
Thu, 7 Feb 2019 14:18:36 +0000 (15:18 +0100)
committerStefan Liebler <stli@linux.ibm.com>
Thu, 7 Feb 2019 14:44:18 +0000 (15:44 +0100)
commit9f44fa22cb66067e92dc27167426ef4ad046c959
tree1d66737f4b3c9b17f0a913243ae0c597b227faff
parent2ebadb6451eda1d518d70e26cf4ceeb0362e2456
Add compiler barriers around modifications of the robust mutex list for pthread_mutex_trylock. [BZ #24180]

While debugging a kernel warning, Thomas Gleixner, Sebastian Sewior and
Heiko Carstens found a bug in pthread_mutex_trylock due to misordered
instructions:
140:   a5 1b 00 01             oill    %r1,1
144:   e5 48 a0 f0 00 00       mvghi   240(%r10),0   <--- THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
14a:   e3 10 a0 e0 00 24       stg     %r1,224(%r10) <--- last THREAD_SETMEM of ENQUEUE_MUTEX_PI

vs (with compiler barriers):
140:   a5 1b 00 01             oill    %r1,1
144:   e3 10 a0 e0 00 24       stg     %r1,224(%r10)
14a:   e5 48 a0 f0 00 00       mvghi   240(%r10),0

Please have a look at the discussion:
"Re: WARN_ON_ONCE(!new_owner) within wake_futex_pi() triggerede"
(https://lore.kernel.org/lkml/20190202112006.GB3381@osiris/)

This patch is introducing the same compiler barriers and comments
for pthread_mutex_trylock as introduced for pthread_mutex_lock and
pthread_mutex_timedlock by commit 8f9450a0b7a9e78267e8ae1ab1000ebca08e473e
"Add compiler barriers around modifications of the robust mutex list."

ChangeLog:

[BZ #24180]
* nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
Add compiler barriers and comments.

(cherry picked from commit 823624bdc47f1f80109c9c52dee7939b9386d708)
ChangeLog
nptl/pthread_mutex_trylock.c