|
|
|
@ -1371,7 +1371,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) |
|
|
|
|
unsigned int depth = bprm->recursion_depth; |
|
|
|
|
int try,retval; |
|
|
|
|
struct linux_binfmt *fmt; |
|
|
|
|
pid_t old_pid; |
|
|
|
|
pid_t old_pid, old_vpid; |
|
|
|
|
|
|
|
|
|
retval = security_bprm_check(bprm); |
|
|
|
|
if (retval) |
|
|
|
@ -1382,8 +1382,9 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) |
|
|
|
|
return retval; |
|
|
|
|
|
|
|
|
|
/* Need to fetch pid before load_binary changes it */ |
|
|
|
|
old_pid = current->pid; |
|
|
|
|
rcu_read_lock(); |
|
|
|
|
old_pid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
|
|
|
|
old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
|
|
|
|
rcu_read_unlock(); |
|
|
|
|
|
|
|
|
|
retval = -ENOENT; |
|
|
|
@ -1406,7 +1407,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) |
|
|
|
|
if (retval >= 0) { |
|
|
|
|
if (depth == 0) { |
|
|
|
|
trace_sched_process_exec(current, old_pid, bprm); |
|
|
|
|
ptrace_event(PTRACE_EVENT_EXEC, old_pid); |
|
|
|
|
ptrace_event(PTRACE_EVENT_EXEC, old_vpid); |
|
|
|
|
} |
|
|
|
|
put_binfmt(fmt); |
|
|
|
|
allow_write_access(bprm->file); |
|
|
|
|