From bbb9ba4324f36a7c4d933d6ebda033519cd43a53 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 19 Mar 2003 09:42:14 +0000 Subject: [PATCH] (__pthread_cond_broadcast): Release lock before waking waiters. --- nptl/sysdeps/pthread/pthread_cond_broadcast.c | 6 ++++++ 1 file changed, 6 insertions(+) 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. */