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 <ik...@redhat.com> > Cc: Benjamin Coddington <bcodd...@redhat.com> > Cc: Al Viro <v...@zeniv.linux.org.uk> > Cc: J. Bruce Fields <bfie...@fieldses.org> > Cc: David Howells <dhowe...@redhat.com> > Cc: Trond Myklebust <trond.mykleb...@primarydata.com> > Cc: Oleg Nesterov <onest...@redhat.com> > Cc: Eric W. Biederman <ebied...@xmission.com> > Cc: Jeff Layton <jeff.lay...@primarydata.com> > --- > 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 majord...@vger.kernel.org > 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/