diff options
Diffstat (limited to 'nptl/sysdeps/pthread/pthread_cond_wait.c')
-rw-r--r-- | nptl/sysdeps/pthread/pthread_cond_wait.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/sysdeps/pthread/pthread_cond_wait.c index 412bca9c25..708566be03 100644 --- a/nptl/sysdeps/pthread/pthread_cond_wait.c +++ b/nptl/sysdeps/pthread/pthread_cond_wait.c @@ -50,6 +50,9 @@ __condvar_cleanup (void *arg) ++cbuffer->cond->__data.__wakeup_seq; ++cbuffer->cond->__data.__woken_seq; + /* We are done. */ + lll_mutex_unlock (cbuffer->cond->__data.__lock); + /* Wake everybody to make sure no condvar signal gets lost. */ #if BYTE_ORDER == LITTLE_ENDIAN int *futex = ((int *) (&cbuffer->cond->__data.__wakeup_seq)); @@ -60,9 +63,6 @@ __condvar_cleanup (void *arg) #endif lll_futex_wake (futex, INT_MAX); - /* We are done. */ - lll_mutex_unlock (cbuffer->cond->__data.__lock); - /* Get the mutex before returning unless asynchronous cancellation is in effect. */ if (!(cbuffer->oldtype & CANCELTYPE_BITMASK)) |