Commit f4fd2c5b authored by Linus Torvalds's avatar Linus Torvalds
parents 711a49a0 85f33466
...@@ -1159,6 +1159,7 @@ EXPORT_SYMBOL(remove_arg_zero); ...@@ -1159,6 +1159,7 @@ EXPORT_SYMBOL(remove_arg_zero);
*/ */
int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
{ {
unsigned int depth = bprm->recursion_depth;
int try,retval; int try,retval;
struct linux_binfmt *fmt; struct linux_binfmt *fmt;
#ifdef __alpha__ #ifdef __alpha__
...@@ -1219,8 +1220,15 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) ...@@ -1219,8 +1220,15 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
continue; continue;
read_unlock(&binfmt_lock); read_unlock(&binfmt_lock);
retval = fn(bprm, regs); retval = fn(bprm, regs);
/*
* Restore the depth counter to its starting value
* in this call, so we don't have to rely on every
* load_binary function to restore it on return.
*/
bprm->recursion_depth = depth;
if (retval >= 0) { if (retval >= 0) {
tracehook_report_exec(fmt, bprm, regs); if (depth == 0)
tracehook_report_exec(fmt, bprm, regs);
put_binfmt(fmt); put_binfmt(fmt);
allow_write_access(bprm->file); allow_write_access(bprm->file);
if (bprm->file) if (bprm->file)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment