1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
* sysdeps/unix/sysv/linux/dl-execstack.c
	(_dl_make_stack_executable): Remember that we changed the permission.
This commit is contained in:
Ulrich Drepper
2003-09-25 03:31:59 +00:00
parent 279f1143af
commit 69c9fa045b
4 changed files with 23 additions and 0 deletions

View File

@ -1,5 +1,8 @@
2003-09-24 Ulrich Drepper <drepper@redhat.com> 2003-09-24 Ulrich Drepper <drepper@redhat.com>
* 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 * sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of
__libc_stack_end. Patch by David Mosberger. __libc_stack_end. Patch by David Mosberger.

View File

@ -1,5 +1,8 @@
2003-09-24 Ulrich Drepper <drepper@redhat.com> 2003-09-24 Ulrich Drepper <drepper@redhat.com>
* allocatestack.c (__make_stacks_executable): Also change
permission of the currently unused stacks.
* allocatestack.c (change_stack_perm): Split out from * allocatestack.c (change_stack_perm): Split out from
__make_stacks_executable. __make_stacks_executable.
(allocate_stack): If the required permission changed between the time (allocate_stack): If the required permission changed between the time

View File

@ -684,6 +684,20 @@ __make_stacks_executable (void)
break; 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); lll_unlock (stack_cache_lock);
if (err == 0) if (err == 0)

View File

@ -110,6 +110,9 @@ _dl_make_stack_executable (void)
# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
#endif #endif
/* Remember that we changed the permission. */
GL(dl_stack_flags) |= PF_X;
return 0; return 0;
} }
rtld_hidden_def (_dl_make_stack_executable) rtld_hidden_def (_dl_make_stack_executable)