Browse Source

NPTL: fix infinite recursion

fix infinite recursion on application exit triggered by linking
libc before libpthread.
Patch from OpenWrt.

Reported-by: Leonid Lisovskiy <lly.dev@gmail.com>
Waldemar Brodkorb 8 years ago
parent
commit
121ee94aa6
2 changed files with 6 additions and 6 deletions
  1. 4 4
      libpthread/nptl/cleanup_defer_compat.c
  2. 2 2
      libpthread/nptl/init.c

+ 4 - 4
libpthread/nptl/cleanup_defer_compat.c

@@ -21,7 +21,7 @@
 
 void
 attribute_protected
-_pthread_cleanup_push_defer (
+__pthread_cleanup_push_defer (
      struct _pthread_cleanup_buffer *buffer,
      void (*routine) (void *),
      void *arg)
@@ -56,12 +56,12 @@ _pthread_cleanup_push_defer (
 
   THREAD_SETMEM (self, cleanup, buffer);
 }
-strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
+strong_alias (__pthread_cleanup_push_defer, _pthread_cleanup_push_defer)
 
 
 void
 attribute_protected
-_pthread_cleanup_pop_restore (
+__pthread_cleanup_pop_restore (
      struct _pthread_cleanup_buffer *buffer,
      int execute)
 {
@@ -96,4 +96,4 @@ _pthread_cleanup_pop_restore (
   if (execute)
     buffer->__routine (buffer->__arg);
 }
-strong_alias (_pthread_cleanup_pop_restore, __pthread_cleanup_pop_restore)
+strong_alias (__pthread_cleanup_pop_restore, _pthread_cleanup_pop_restore)

+ 2 - 2
libpthread/nptl/init.c

@@ -104,8 +104,8 @@ static const struct pthread_functions pthread_functions =
     .ptr___pthread_key_create = __pthread_key_create_internal,
     .ptr___pthread_getspecific = __pthread_getspecific_internal,
     .ptr___pthread_setspecific = __pthread_setspecific_internal,
-    .ptr__pthread_cleanup_push_defer = _pthread_cleanup_push_defer,
-    .ptr__pthread_cleanup_pop_restore = _pthread_cleanup_pop_restore,
+    .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
+    .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
     .ptr_nthreads = &__nptl_nthreads,
     .ptr___pthread_unwind = &__pthread_unwind,
     .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,