From 69c9fa045bce5e125e2e4525eb62ec58965e92f5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 25 Sep 2003 03:31:59 +0000 Subject: Update. * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): Remember that we changed the permission. --- ChangeLog | 3 +++ nptl/ChangeLog | 3 +++ nptl/allocatestack.c | 14 ++++++++++++++ sysdeps/unix/sysv/linux/dl-execstack.c | 3 +++ 4 files changed, 23 insertions(+) diff --git a/ChangeLog b/ChangeLog index 98435be439..2b0b36f10f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-09-24 Ulrich Drepper + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Remember that we changed the permission. + * sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of __libc_stack_end. Patch by David Mosberger. diff --git a/nptl/ChangeLog b/nptl/ChangeLog index e18c9cac21..30b7d9eb1d 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,8 @@ 2003-09-24 Ulrich Drepper + * allocatestack.c (__make_stacks_executable): Also change + permission of the currently unused stacks. + * allocatestack.c (change_stack_perm): Split out from __make_stacks_executable. (allocate_stack): If the required permission changed between the time diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 24292e7295..c82b36ede0 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -684,6 +684,20 @@ __make_stacks_executable (void) break; } + /* Also change the permission for the currently unused stacks. This + might be wasted time but better spend it here than adding a check + in the fast path. */ + list_for_each (runp, &stack_cache) + { + err = change_stack_perm (list_entry (runp, struct pthread, list) +#ifdef NEED_SEPARATE_REGISTER_STACK + , pagemask +#endif + ); + if (err != 0) + break; + } + lll_unlock (stack_cache_lock); if (err == 0) diff --git a/sysdeps/unix/sysv/linux/dl-execstack.c b/sysdeps/unix/sysv/linux/dl-execstack.c index 42300b0f4d..c840f61031 100644 --- a/sysdeps/unix/sysv/linux/dl-execstack.c +++ b/sysdeps/unix/sysv/linux/dl-execstack.c @@ -110,6 +110,9 @@ _dl_make_stack_executable (void) # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" #endif + /* Remember that we changed the permission. */ + GL(dl_stack_flags) |= PF_X; + return 0; } rtld_hidden_def (_dl_make_stack_executable) -- cgit v1.2.3