about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2012-10-16 14:23:01 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2012-10-16 14:23:35 +0530
commit9485a404440e392dbcfdc157bbdf5c863f9c0fce (patch)
tree6e03a935c732c07e5d7ada90bf8dbc49df0dbf74 /nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
parent172a631a1fc8ec8fcef80af1f91438d092957c3e (diff)
downloadglibc-9485a404440e392dbcfdc157bbdf5c863f9c0fce.tar.gz
glibc-9485a404440e392dbcfdc157bbdf5c863f9c0fce.tar.xz
glibc-9485a404440e392dbcfdc157bbdf5c863f9c0fce.zip
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/pthread_cond_wait.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S6
1 files changed, 5 insertions, 1 deletions
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