mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
aout: move setup_arg_pages() prior to reading/mapping the binary
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
550cf00dbc
commit
6414fa6a15
@ -315,6 +315,13 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|||||||
current->mm->free_area_cache = TASK_UNMAPPED_BASE;
|
current->mm->free_area_cache = TASK_UNMAPPED_BASE;
|
||||||
current->mm->cached_hole_size = 0;
|
current->mm->cached_hole_size = 0;
|
||||||
|
|
||||||
|
retval = setup_arg_pages(bprm, IA32_STACK_TOP, EXSTACK_DEFAULT);
|
||||||
|
if (retval < 0) {
|
||||||
|
/* Someone check-me: is this error path enough? */
|
||||||
|
send_sig(SIGKILL, current, 0);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
install_exec_creds(bprm);
|
install_exec_creds(bprm);
|
||||||
current->flags &= ~PF_FORKNOEXEC;
|
current->flags &= ~PF_FORKNOEXEC;
|
||||||
|
|
||||||
@ -410,13 +417,6 @@ beyond_if:
|
|||||||
|
|
||||||
set_brk(current->mm->start_brk, current->mm->brk);
|
set_brk(current->mm->start_brk, current->mm->brk);
|
||||||
|
|
||||||
retval = setup_arg_pages(bprm, IA32_STACK_TOP, EXSTACK_DEFAULT);
|
|
||||||
if (retval < 0) {
|
|
||||||
/* Someone check-me: is this error path enough? */
|
|
||||||
send_sig(SIGKILL, current, 0);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
current->mm->start_stack =
|
current->mm->start_stack =
|
||||||
(unsigned long)create_aout_tables((char __user *)bprm->p, bprm);
|
(unsigned long)create_aout_tables((char __user *)bprm->p, bprm);
|
||||||
/* start thread */
|
/* start thread */
|
||||||
|
@ -259,6 +259,13 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
|
|||||||
current->mm->free_area_cache = current->mm->mmap_base;
|
current->mm->free_area_cache = current->mm->mmap_base;
|
||||||
current->mm->cached_hole_size = 0;
|
current->mm->cached_hole_size = 0;
|
||||||
|
|
||||||
|
retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
|
||||||
|
if (retval < 0) {
|
||||||
|
/* Someone check-me: is this error path enough? */
|
||||||
|
send_sig(SIGKILL, current, 0);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
install_exec_creds(bprm);
|
install_exec_creds(bprm);
|
||||||
current->flags &= ~PF_FORKNOEXEC;
|
current->flags &= ~PF_FORKNOEXEC;
|
||||||
|
|
||||||
@ -352,13 +359,6 @@ beyond_if:
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
|
|
||||||
if (retval < 0) {
|
|
||||||
/* Someone check-me: is this error path enough? */
|
|
||||||
send_sig(SIGKILL, current, 0);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
current->mm->start_stack =
|
current->mm->start_stack =
|
||||||
(unsigned long) create_aout_tables((char __user *) bprm->p, bprm);
|
(unsigned long) create_aout_tables((char __user *) bprm->p, bprm);
|
||||||
#ifdef __alpha__
|
#ifdef __alpha__
|
||||||
|
Loading…
Reference in New Issue
Block a user