diff options
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/exec.c b/fs/exec.c index 9a1d9f0a60a..b1fd2025e59 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -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);  |