summary refs log tree commit diff
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);
     }