summary refs log tree commit diff
path: root/nss
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-12-19 15:45:39 +0000
committerUlrich Drepper <drepper@redhat.com>2006-12-19 15:45:39 +0000
commit44901495168744c4344395893a0c44fdadcf3a7b (patch)
treea192b50f012a523f2ad9efe90df966ce4c111c94 /nss
parenta12dcecc507ec5a2fc6b82bd1918357ac58b7da8 (diff)
downloadglibc-44901495168744c4344395893a0c44fdadcf3a7b.tar.gz
glibc-44901495168744c4344395893a0c44fdadcf3a7b.tar.xz
glibc-44901495168744c4344395893a0c44fdadcf3a7b.zip
* nss/getXXbyYY_r.c: Include atomic.h. cvs/fedora-glibc-20061219T1804
	(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
	add atomic_write_barrier () in between.
Diffstat (limited to 'nss')
-rw-r--r--nss/getXXbyYY_r.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 34c305f3b2..080163aac9 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <assert.h>
+#include <atomic.h>
 #include <errno.h>
 #include <stdbool.h>
 #include "nsswitch.h"
@@ -173,9 +174,6 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
 	startp = (service_user *) -1l;
       else
 	{
-	  startp = nip;
-	  start_fct = fct.l;
-
 #ifdef NEED__RES
 	  /* The resolver code will really be used so we have to
 	     initialize it.  */
@@ -190,6 +188,11 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
 	  if (!_res_hconf.initialized)
 	    _res_hconf_init ();
 #endif /* need _res_hconf */
+
+	  start_fct = fct.l;
+	  /* Make sure start_fct is written before startp.  */
+	  atomic_write_barrier ();
+	  startp = nip;
 	}
     }
   else