summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/pthread/pthread_barrier_wait.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/pthread/pthread_barrier_wait.c')
-rw-r--r--nptl/sysdeps/pthread/pthread_barrier_wait.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/nptl/sysdeps/pthread/pthread_barrier_wait.c b/nptl/sysdeps/pthread/pthread_barrier_wait.c
index f0f65b05c7..aa5b42d419 100644
--- a/nptl/sysdeps/pthread/pthread_barrier_wait.c
+++ b/nptl/sysdeps/pthread/pthread_barrier_wait.c
@@ -55,17 +55,13 @@ pthread_barrier_wait (barrier)
/* The number of the event we are waiting for. The barrier's event
number must be bumped before we continue. */
unsigned int event = ibarrier->curr_event;
- do
- {
- /* Before suspending, make the barrier available to others. */
- lll_unlock (ibarrier->lock);
- /* Wait for the event counter of the barrier to change. */
- lll_futex_wait (&ibarrier->curr_event, event);
+ /* Before suspending, make the barrier available to others. */
+ lll_unlock (ibarrier->lock);
- /* We are going to access shared data. */
- lll_lock (ibarrier->lock);
- }
+ /* Wait for the event counter of the barrier to change. */
+ do
+ lll_futex_wait (&ibarrier->curr_event, event);
while (event == ibarrier->curr_event);
}