From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933000AbbIYSAF (ORCPT ); Fri, 25 Sep 2015 14:00:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49316 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932907AbbIYR77 (ORCPT ); Fri, 25 Sep 2015 13:59:59 -0400 Date: Fri, 25 Sep 2015 19:56:54 +0200 From: Oleg Nesterov To: Konstantin Khlebnikov Cc: linux-api@vger.kernel.org, containers@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Roman Gushchin , Serge Hallyn , "Eric W. Biederman" , Chen Fan , Andrew Morton , Linus Torvalds , =?iso-8859-1?Q?St=E9phane?= Graber Subject: [PATCH 0/1] ns: introduce proc_get_ns_by_fd() Message-ID: <20150925175654.GA12504@redhat.com> References: <20150925135246.27620.97496.stgit@buzz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150925135246.27620.97496.stgit@buzz> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/25, Konstantin Khlebnikov wrote: > > +struct ns_common *proc_ns_fdget(int fd, int nstype, struct fd *fd_ref) > { > - struct file *file; > + struct ns_common *ns; > + struct fd f; > > - file = fget(fd); > - if (!file) > + f = fdget(fd); > + if (!f.file) > return ERR_PTR(-EBADF); > > - if (file->f_op != &ns_file_operations) > + if (f.file->f_op != &ns_file_operations) > + goto out_invalid; > + > + ns = get_proc_ns(file_inode(f.file)); > + if (nstype && (ns->ops->type != nstype)) > goto out_invalid; > > - return file; > + *fd_ref = f; > + return ns; > > out_invalid: > - fput(file); > + fdput(f); > return ERR_PTR(-EINVAL); > } Well yes, fdget() makes sense but this is minor. Honestly, I do not really like the new helper... I understand this is subjective, so I won't insist. But how about 1/1? We do not need fd/file at all. With this patch your sys_getvpid() can just use proc_get_ns_by_fd(fd, CLONE_NEWPID) and put_pid_ns(). Eric, what do you think? See also "TODO" in the changelog. Oleg.