Oops! Please ignore these, mistakenly sent. On Tue, 2015-02-03 at 15:16 +0800, Ian Kent wrote: > For usermode helpers to execute within a namspace a slightly different > entry point to setns() that takes a namspace inode is needed. > > Signed-off-by: Ian Kent <[email protected]> > Cc: Benjamin Coddington <[email protected]> > Cc: Al Viro <[email protected]> > Cc: J. Bruce Fields <[email protected]> > Cc: David Howells <[email protected]> > Cc: Trond Myklebust <[email protected]> > Cc: Oleg Nesterov <[email protected]> > Cc: Eric W. Biederman <[email protected]> > Cc: Jeff Layton <[email protected]> > --- > include/linux/nsproxy.h | 1 + > kernel/nsproxy.c | 21 ++++++++++++++------- > 2 files changed, 15 insertions(+), 7 deletions(-) > > diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h > index 35fa08f..c75bf12 100644 > --- a/include/linux/nsproxy.h > +++ b/include/linux/nsproxy.h > @@ -62,6 +62,7 @@ extern struct nsproxy init_nsproxy; > * > */ > > +int setns_inode(struct inode *inode, int nstype); > int copy_namespaces(unsigned long flags, struct task_struct *tsk); > void exit_task_namespaces(struct task_struct *tsk); > void switch_task_namespaces(struct task_struct *tsk, struct nsproxy *new); > diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c > index 49746c8..27cc544 100644 > --- a/kernel/nsproxy.c > +++ b/kernel/nsproxy.c > @@ -218,20 +218,15 @@ void exit_task_namespaces(struct task_struct *p) > switch_task_namespaces(p, NULL); > } > > -SYSCALL_DEFINE2(setns, int, fd, int, nstype) > +int setns_inode(struct inode *inode, int nstype) > { > struct task_struct *tsk = current; > struct nsproxy *new_nsproxy; > - struct file *file; > struct ns_common *ns; > int err; > > - file = proc_ns_fget(fd); > - if (IS_ERR(file)) > - return PTR_ERR(file); > - > err = -EINVAL; > - ns = get_proc_ns(file_inode(file)); > + ns = get_proc_ns(inode); > if (nstype && (ns->ops->type != nstype)) > goto out; > > @@ -248,6 +243,18 @@ SYSCALL_DEFINE2(setns, int, fd, int, nstype) > } > switch_task_namespaces(tsk, new_nsproxy); > out: > + return err; > +} > + > +SYSCALL_DEFINE2(setns, int, fd, int, nstype) > +{ > + struct file *file; > + int err; > + > + file = proc_ns_fget(fd); > + if (IS_ERR(file)) > + return PTR_ERR(file); > + err = setns_inode(file_inode(file), nstype); > fput(file); > return err; > } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [email protected] > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

