diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-11-01 03:13:17 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-12-04 14:34:54 -0500 |
commit | f77c80142e1afe6d5c16975ca5d7d1fc324b16f9 (patch) | |
tree | c2c8f726402610aee77ccca0627a4c38f944640b /kernel/nsproxy.c | |
parent | 33c429405a2c8d9e42afb9fee88a63cfb2de1e98 (diff) |
bury struct proc_ns in fs/proc
a) make get_proc_ns() return a pointer to struct ns_common
b) mirror ns_ops in dentry->d_fsdata of ns dentries, so that
is_mnt_ns_file() could get away with fewer dereferences.
That way struct proc_ns becomes invisible outside of fs/proc/*.c
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/nsproxy.c')
-rw-r--r-- | kernel/nsproxy.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c index 87c37221cb7f..49746c81ad8d 100644 --- a/kernel/nsproxy.c +++ b/kernel/nsproxy.c | |||
@@ -222,7 +222,6 @@ SYSCALL_DEFINE2(setns, int, fd, int, nstype) | |||
222 | { | 222 | { |
223 | struct task_struct *tsk = current; | 223 | struct task_struct *tsk = current; |
224 | struct nsproxy *new_nsproxy; | 224 | struct nsproxy *new_nsproxy; |
225 | struct proc_ns *ei; | ||
226 | struct file *file; | 225 | struct file *file; |
227 | struct ns_common *ns; | 226 | struct ns_common *ns; |
228 | int err; | 227 | int err; |
@@ -232,8 +231,7 @@ SYSCALL_DEFINE2(setns, int, fd, int, nstype) | |||
232 | return PTR_ERR(file); | 231 | return PTR_ERR(file); |
233 | 232 | ||
234 | err = -EINVAL; | 233 | err = -EINVAL; |
235 | ei = get_proc_ns(file_inode(file)); | 234 | ns = get_proc_ns(file_inode(file)); |
236 | ns = ei->ns; | ||
237 | if (nstype && (ns->ops->type != nstype)) | 235 | if (nstype && (ns->ops->type != nstype)) |
238 | goto out; | 236 | goto out; |
239 | 237 | ||