From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966263AbbBCHUt (ORCPT ); Tue, 3 Feb 2015 02:20:49 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:43137 "EHLO out3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965146AbbBCHUs (ORCPT ); Tue, 3 Feb 2015 02:20:48 -0500 X-Sasl-enc: Fe8SuFcBtgKhvfoOVCfgZl+irCsJ07VtTj7XJhTZmzY/ 1422948047 Message-ID: <1422948035.2618.0.camel@pluto.fritz.box> Subject: Re: [RFC PATCH 1/8] nsproxy - refactor setns() From: Ian Kent To: Kernel Mailing List Date: Tue, 03 Feb 2015 15:20:35 +0800 In-Reply-To: <20150203071618.8523.38360.stgit@pluto.fritz.box> References: <20150203071618.8523.38360.stgit@pluto.fritz.box> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4 (3.10.4-4.fc20) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Cc: Benjamin Coddington > Cc: Al Viro > Cc: J. Bruce Fields > Cc: David Howells > Cc: Trond Myklebust > Cc: Oleg Nesterov > Cc: Eric W. Biederman > Cc: Jeff Layton > --- > 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 majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/