Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 26 Sep 2000 21:01:24 +0000 (21:01 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 26 Sep 2000 21:01:24 +0000 (21:01 +0000)
2000-09-26  Ulrich Drepper  <drepper@redhat.com>

* spinlock.h (__pthread_set_own_extricate_if): Add back locking
and explain why.

linuxthreads/ChangeLog
linuxthreads/spinlock.h

index 1bf05a2..0fb15c5 100644 (file)
@@ -1,3 +1,8 @@
+2000-09-26  Ulrich Drepper  <drepper@redhat.com>
+
+       * spinlock.h (__pthread_set_own_extricate_if): Add back locking
+       and explain why.
+
 2000-09-20  Andreas Jaeger  <aj@suse.de>
 
        * pthread.c [!__ASSUME_REALTIME_SIGNALS]: Make inclusion of
index b3d0231..c194d79 100644 (file)
@@ -214,13 +214,9 @@ static inline long atomic_decrement(struct pthread_atomic *pa)
 static inline void
 __pthread_set_own_extricate_if(pthread_descr self, pthread_extricate_if *peif)
 {
-#if 0
+  /* The locks here are not ensuring an atomic update of the p_extricate
+     pointer.  They protect users of the pointer from using stale memory.  */
   __pthread_lock(THREAD_GETMEM(self, p_lock), self);
   THREAD_SETMEM(self, p_extricate, peif);
   __pthread_unlock(THREAD_GETMEM (self, p_lock));
-#else
-  /* I don't think that getting the lock is necessary.  All we do is an
-     atomic write.  */
-  THREAD_SETMEM(self, p_extricate, peif);
-#endif
 }