diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2012-10-16 14:23:01 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2012-10-16 14:23:35 +0530 |
commit | 9485a404440e392dbcfdc157bbdf5c863f9c0fce (patch) | |
tree | 6e03a935c732c07e5d7ada90bf8dbc49df0dbf74 /nptl/sysdeps/unix/sysv/linux/x86_64 | |
parent | 172a631a1fc8ec8fcef80af1f91438d092957c3e (diff) |
Adjust mutex lock in condvar_cleanup if we got it from requeue_pi
This completes the fix to bz #14652.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S index eb133266c6..15e451a51c 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S @@ -784,7 +784,10 @@ __condvar_cleanup2: movl (%rdi), %eax andl $TID_MASK, %eax cmpl %eax, %fs:TID - je 8f + jne 7f + /* We managed to get the lock. Fix it up before returning. */ + callq __pthread_mutex_cond_lock_adjust + jmp 8f 7: callq __pthread_mutex_cond_lock diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S index 6c6dc0e74d..2c6b515d83 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S @@ -508,7 +508,11 @@ __condvar_cleanup1: movl (%rdi), %eax andl $TID_MASK, %eax cmpl %eax, %fs:TID - je 8f + jne 7f + /* We managed to get the lock. Fix it up before returning. */ + callq __pthread_mutex_cond_lock_adjust + jmp 8f + 7: callq __pthread_mutex_cond_lock |