From patchwork Fri Mar 10 21:27:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Al Viro X-Patchwork-Id: 67718 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp1113087wrd; Fri, 10 Mar 2023 13:43:33 -0800 (PST) X-Google-Smtp-Source: AK7set8i8O4yUWOayCXgWTmkK7k4bn3ji2/h8PYQRu2BkWmHdvPwjVHfdeOupiAn8OHUosSyMc1l X-Received: by 2002:a05:6a20:6689:b0:cb:1ee4:ede4 with SMTP id o9-20020a056a20668900b000cb1ee4ede4mr25680877pzh.39.1678484612772; Fri, 10 Mar 2023 13:43:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678484612; cv=none; d=google.com; s=arc-20160816; b=woY9cYW8qAr3goO4PZMH7tpy4L35K1Xmw6tFaOEgB3sqftwjBTnD5VKD2wUEa49oeQ CQgUSKek74o3yip8IwcBzpux10m7kkhT4zkXrnwkkGWg5or+s4hCnKXg5OQur75qZeYJ i9SsmPbGf5TJtydpeYcP2aHUZIOF6amsBirjvO3GJzhYJ+WGV0Wk70SBe20G4vwzPrmJ lAnUzFh8i+L0bVpbe3AnOkEXDdUjFjMmO5Cz7LnI1HIoO6kSkNygYmuQUKRRTDllg7yH GOx9IoXZ9rFU8xqggnppqQMwDOq0E1LcpcYK4clLl1DYz6upgQ5wxCprF8sHdYLyxnfa 1iNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ovuiX50qxtOyMXh0JsgRX7kfHJDixjO8KnqG2nJuLwA=; b=NQHB6gvJOr6rOejFTAsw/jfi8zPG1WHE+5PYon/w9H7L8EKGNXBwVoyXNKj1gkD++H eQHuZavr+Mo2y9SJNkorg6Zs1aG3QJwBTiPvX9JkUGS/N/rMp/oVO30zEUb74C1Xuyg9 4YGp24q2ao3geRmfYN+6ubRgtqVLa/4kkls0QhQFyiUVMJN2oVzJ8ZOKxFGZbxNAIWHk 8YIkuevMvzN8/7D/ajGezFYFNWj18XN3ewhBKkNsqw80B456q1w6jr6yLsPZLC47k4fm 3ZJfR2X0CtgobrQFjzUqVb1e/xoK7gd+9fSEwchb89wiUWqSCBp1V8zzYnKIdt/aBLrE 4YrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b=vqcgKQtb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z8-20020aa79e48000000b005a8168a456bsi565044pfq.286.2023.03.10.13.43.12; Fri, 10 Mar 2023 13:43:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b=vqcgKQtb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231866AbjCJV2E (ORCPT + 99 others); Fri, 10 Mar 2023 16:28:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231730AbjCJV1w (ORCPT ); Fri, 10 Mar 2023 16:27:52 -0500 Received: from zeniv.linux.org.uk (zeniv.linux.org.uk [IPv6:2a03:a000:7:0:5054:ff:fe1c:15ff]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23C63117FFB; Fri, 10 Mar 2023 13:27:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=linux.org.uk; s=zeniv-20220401; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=ovuiX50qxtOyMXh0JsgRX7kfHJDixjO8KnqG2nJuLwA=; b=vqcgKQtbFVB3ofI0Glkl1QG+U8 I0FDhY3YeZ4SuIlRf4ERV3BogLvNuJtVMXdZPJ6hPCsL4t4nkRzwcKILAPUIQN/kj7yecB25IKygY b8WIXM7LLuPOsEvelZ1cPfOaIKLyyw2F9oGcWw13OLNa4n7U/ZqPBGC00le4JK1Pyjtt0SSDpV2Yw QdEcI+MUpluJcsOtCwFg8ybDPuoOziNYlzYf8wPBdC612McyD/JhqOulBEGU8dlcSk3a9/0t12Dqr BPjZoIz46rdMWtuU7rW/D+KZbUnZf700uTg4hCG8vu5RAkQqr8ZLIDmz1Rg2aOpxTsTfBc7QOgIw4 t7diKJUQ==; Received: from viro by zeniv.linux.org.uk with local (Exim 4.96 #2 (Red Hat Linux)) id 1pakHF-00FR6D-27; Fri, 10 Mar 2023 21:27:49 +0000 From: Al Viro To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 4/8] kill the last remaining user of proc_ns_fget() Date: Fri, 10 Mar 2023 21:27:44 +0000 Message-Id: <20230310212748.3679076-4-viro@zeniv.linux.org.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310212748.3679076-1-viro@zeniv.linux.org.uk> References: <20230310212536.GX3390869@ZenIV> <20230310212748.3679076-1-viro@zeniv.linux.org.uk> MIME-Version: 1.0 Sender: Al Viro X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760018681387029938?= X-GMAIL-MSGID: =?utf-8?q?1760018681387029938?= lookups by descriptor are better off closer to syscall surface... Signed-off-by: Al Viro --- fs/nsfs.c | 18 ------------------ include/linux/proc_ns.h | 1 - net/core/net_namespace.c | 23 +++++++++++------------ 3 files changed, 11 insertions(+), 31 deletions(-) diff --git a/fs/nsfs.c b/fs/nsfs.c index f8df60b3b901..f602a96a1afe 100644 --- a/fs/nsfs.c +++ b/fs/nsfs.c @@ -235,24 +235,6 @@ bool proc_ns_file(const struct file *file) return file->f_op == &ns_file_operations; } -struct file *proc_ns_fget(int fd) -{ - struct file *file; - - file = fget(fd); - if (!file) - return ERR_PTR(-EBADF); - - if (file->f_op != &ns_file_operations) - goto out_invalid; - - return file; - -out_invalid: - fput(file); - return ERR_PTR(-EINVAL); -} - /** * ns_match() - Returns true if current namespace matches dev/ino provided. * @ns: current namespace diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h index 75807ecef880..49539bc416ce 100644 --- a/include/linux/proc_ns.h +++ b/include/linux/proc_ns.h @@ -72,7 +72,6 @@ static inline int ns_alloc_inum(struct ns_common *ns) #define ns_free_inum(ns) proc_free_inum((ns)->inum) -extern struct file *proc_ns_fget(int fd); #define get_proc_ns(inode) ((struct ns_common *)(inode)->i_private) extern int ns_get_path(struct path *path, struct task_struct *task, const struct proc_ns_operations *ns_ops); diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 7b69cf882b8e..3e3598cd49f2 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -676,21 +677,19 @@ EXPORT_SYMBOL_GPL(get_net_ns); struct net *get_net_ns_by_fd(int fd) { - struct file *file; - struct ns_common *ns; - struct net *net; + struct fd f = fdget(fd); + struct net *net = ERR_PTR(-EINVAL); - file = proc_ns_fget(fd); - if (IS_ERR(file)) - return ERR_CAST(file); + if (!f.file) + return ERR_PTR(-EBADF); - ns = get_proc_ns(file_inode(file)); - if (ns->ops == &netns_operations) - net = get_net(container_of(ns, struct net, ns)); - else - net = ERR_PTR(-EINVAL); + if (proc_ns_file(f.file)) { + struct ns_common *ns = get_proc_ns(file_inode(f.file)); + if (ns->ops == &netns_operations) + net = get_net(container_of(ns, struct net, ns)); + } + fdput(f); - fput(file); return net; } EXPORT_SYMBOL_GPL(get_net_ns_by_fd);