about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_broadcast.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/nptl/sysdeps/pthread/pthread_cond_broadcast.c b/nptl/sysdeps/pthread/pthread_cond_broadcast.c
index 7ae1602fc1..1076fe3c50 100644
--- a/nptl/sysdeps/pthread/pthread_cond_broadcast.c
+++ b/nptl/sysdeps/pthread/pthread_cond_broadcast.c
@@ -40,6 +40,9 @@ __pthread_cond_broadcast (cond)
       /* Yes.  Mark them all as woken.  */
       cond->__data.__wakeup_seq = cond->__data.__total_seq;
 
+      /* We are done.  */
+      lll_mutex_unlock (cond->__data.__lock);
+
       /* The futex syscall operates on a 32-bit word.  That is fine,
 	 we just use the low 32 bits of the sequence counter.  */
 #if BYTE_ORDER == LITTLE_ENDIAN
@@ -52,6 +55,9 @@ __pthread_cond_broadcast (cond)
 
       /* Wake everybody.  */
       lll_futex_wake (futex, INT_MAX);
+
+      /* That's all.  */
+      return 0;
     }
 
   /* We are done.  */