summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2016-01-07 22:34:46 (GMT)
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-01-10 07:39:19 (GMT)
commit121ee94aa6af104ed33a83bc573739a6f2c02f54 (patch)
treefcd0fee0920e46dcefc84f5380412c3a61719793
parent097e5f6b5af44c8cfc365b0b7a9d8e628e647607 (diff)
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>
-rw-r--r--libpthread/nptl/cleanup_defer_compat.c8
-rw-r--r--libpthread/nptl/init.c4
2 files changed, 6 insertions, 6 deletions
diff --git a/libpthread/nptl/cleanup_defer_compat.c b/libpthread/nptl/cleanup_defer_compat.c
index 64ecb13..ba15c79 100644
--- a/libpthread/nptl/cleanup_defer_compat.c
+++ b/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)
diff --git a/libpthread/nptl/init.c b/libpthread/nptl/init.c
index 776bec7..eb84d6e 100644
--- a/libpthread/nptl/init.c
+++ b/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,