diff options
| author | J. Bruce Fields <bfields@redhat.com> | 2012-03-21 16:42:14 -0400 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2012-03-26 11:48:54 -0400 | 
| commit | 1df00640c9111c881633d9b219f18e66c52599ec (patch) | |
| tree | e36d3924d84f47ec93f6650ff1fd5b8ea7d10d24 /kernel/fork.c | |
| parent | ab4684d1560f8d77f6ce82bd3f1f82937070d397 (diff) | |
| parent | 5a7c9eec9fde1da0e3adf0a4ddb64ff2a324a492 (diff) | |
Merge nfs containerization work from Trond's tree
The nfs containerization work is a prerequisite for Jeff Layton's reboot
recovery rework.
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 051f090d40c1..1b2ef3c23ae4 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -647,6 +647,26 @@ struct mm_struct *get_task_mm(struct task_struct *task)  }  EXPORT_SYMBOL_GPL(get_task_mm); +struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) +{ +	struct mm_struct *mm; +	int err; + +	err =  mutex_lock_killable(&task->signal->cred_guard_mutex); +	if (err) +		return ERR_PTR(err); + +	mm = get_task_mm(task); +	if (mm && mm != current->mm && +			!ptrace_may_access(task, mode)) { +		mmput(mm); +		mm = ERR_PTR(-EACCES); +	} +	mutex_unlock(&task->signal->cred_guard_mutex); + +	return mm; +} +  /* Please note the differences between mmput and mm_release.   * mmput is called whenever we stop holding onto a mm_struct,   * error success whatever.  | 
