summaryrefslogtreecommitdiff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2015-03-23 01:53:54 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-03-23 01:53:54 +0100
commit0ef7b75c4ba91b6660f0d3d8b51d14d25e3d5bfb (patch)
tree1f8021dd18bf296cc3f688656234e28f62236bfb /sysdeps/generic
parent733616d782505a538bc2df900fe211a4e5a68b54 (diff)
Fix safety of pthread_once
* sysdeps/generic/pt-once.c (__pthread_once): Call __memory_barrier before testing the __run field.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/pt-once.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sysdeps/generic/pt-once.c b/sysdeps/generic/pt-once.c
index 21f097d..cfa45d5 100644
--- a/sysdeps/generic/pt-once.c
+++ b/sysdeps/generic/pt-once.c
@@ -25,6 +25,7 @@
int
__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
{
+ __memory_barrier ();
if (once_control->__run == 0)
{
__pthread_spin_lock (&once_control->__lock);