aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/binfmt_aout.c1
-rw-r--r--fs/binfmt_elf.c1
-rw-r--r--fs/binfmt_elf_fdpic.c1
-rw-r--r--fs/binfmt_flat.c1
-rw-r--r--fs/exec.c6
-rw-r--r--include/linux/binfmts.h1
6 files changed, 11 insertions, 0 deletions
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index ce1824f47ba6..c3deb2e35f20 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -330,6 +330,7 @@ beyond_if:
330#ifdef __alpha__ 330#ifdef __alpha__
331 regs->gp = ex.a_gpvalue; 331 regs->gp = ex.a_gpvalue;
332#endif 332#endif
333 finalize_exec(bprm);
333 start_thread(regs, ex.a_entry, current->mm->start_stack); 334 start_thread(regs, ex.a_entry, current->mm->start_stack);
334 return 0; 335 return 0;
335} 336}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index bdb201230bae..3edca6cb9a33 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -1155,6 +1155,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
1155 ELF_PLAT_INIT(regs, reloc_func_desc); 1155 ELF_PLAT_INIT(regs, reloc_func_desc);
1156#endif 1156#endif
1157 1157
1158 finalize_exec(bprm);
1158 start_thread(regs, elf_entry, bprm->p); 1159 start_thread(regs, elf_entry, bprm->p);
1159 retval = 0; 1160 retval = 0;
1160out: 1161out:
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
index 429326b6e2e7..d90993adeffa 100644
--- a/fs/binfmt_elf_fdpic.c
+++ b/fs/binfmt_elf_fdpic.c
@@ -463,6 +463,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
463 dynaddr); 463 dynaddr);
464#endif 464#endif
465 465
466 finalize_exec(bprm);
466 /* everything is now ready... get the userspace context ready to roll */ 467 /* everything is now ready... get the userspace context ready to roll */
467 entryaddr = interp_params.entry_addr ?: exec_params.entry_addr; 468 entryaddr = interp_params.entry_addr ?: exec_params.entry_addr;
468 start_thread(regs, entryaddr, current->mm->start_stack); 469 start_thread(regs, entryaddr, current->mm->start_stack);
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index 5d6b94475f27..82a48e830018 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -994,6 +994,7 @@ static int load_flat_binary(struct linux_binprm *bprm)
994 FLAT_PLAT_INIT(regs); 994 FLAT_PLAT_INIT(regs);
995#endif 995#endif
996 996
997 finalize_exec(bprm);
997 pr_debug("start_thread(regs=0x%p, entry=0x%lx, start_stack=0x%lx)\n", 998 pr_debug("start_thread(regs=0x%p, entry=0x%lx, start_stack=0x%lx)\n",
998 regs, start_addr, current->mm->start_stack); 999 regs, start_addr, current->mm->start_stack);
999 start_thread(regs, start_addr, current->mm->start_stack); 1000 start_thread(regs, start_addr, current->mm->start_stack);
diff --git a/fs/exec.c b/fs/exec.c
index f4469ab88c7a..422ad79a7a03 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1384,6 +1384,12 @@ void setup_new_exec(struct linux_binprm * bprm)
1384} 1384}
1385EXPORT_SYMBOL(setup_new_exec); 1385EXPORT_SYMBOL(setup_new_exec);
1386 1386
1387/* Runs immediately before start_thread() takes over. */
1388void finalize_exec(struct linux_binprm *bprm)
1389{
1390}
1391EXPORT_SYMBOL(finalize_exec);
1392
1387/* 1393/*
1388 * Prepare credentials and lock ->cred_guard_mutex. 1394 * Prepare credentials and lock ->cred_guard_mutex.
1389 * install_exec_creds() commits the new creds and drops the lock. 1395 * install_exec_creds() commits the new creds and drops the lock.
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index b0abe21d6cc9..40e52afbb2b0 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -118,6 +118,7 @@ extern int __must_check remove_arg_zero(struct linux_binprm *);
118extern int search_binary_handler(struct linux_binprm *); 118extern int search_binary_handler(struct linux_binprm *);
119extern int flush_old_exec(struct linux_binprm * bprm); 119extern int flush_old_exec(struct linux_binprm * bprm);
120extern void setup_new_exec(struct linux_binprm * bprm); 120extern void setup_new_exec(struct linux_binprm * bprm);
121extern void finalize_exec(struct linux_binprm *bprm);
121extern void would_dump(struct linux_binprm *, struct file *); 122extern void would_dump(struct linux_binprm *, struct file *);
122 123
123extern int suid_dumpable; 124extern int suid_dumpable;