From patchwork Tue Dec 7 00:51:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660639 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E41C8C433FE for ; Tue, 7 Dec 2021 00:51:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378736AbhLGAzT (ORCPT ); Mon, 6 Dec 2021 19:55:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245599AbhLGAzT (ORCPT ); Mon, 6 Dec 2021 19:55:19 -0500 Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2257C061746 for ; Mon, 6 Dec 2021 16:51:49 -0800 (PST) Received: by mail-pj1-x1030.google.com with SMTP id gf14-20020a17090ac7ce00b001a7a2a0b5c3so613360pjb.5 for ; Mon, 06 Dec 2021 16:51:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Rs7L2atBWuphTJ3YV3N4pXmYujle3iQ048X1U78BZYg=; b=TI61lv/RCd8weQ4DxIzlaUFsE0+puFr9kGSWwi1sPd1zAFDiIRzhecurmDGkUGmTtC e0R8vh6S/m/z2TeUxWcMx01NH8AWmybBaN78fBT1DDyEdBg3CzI3OszU1pGUE9TVyVvB FRKsT5vUXgVgi06WcSxFGYiyrcWsqCe5zDe7WfQlYUORvQFSNM0+SvJ6dZK9Hcm45+jJ vXjzRb6glIiKQ5yPEeF9XPf/6zlM+PX4nDGZDcm65GcHtILo12XBA5WiVihJvlOWu3YK Cf+IIeA+b7G+7UQgfik/qpW3uTluXtFiI/aHwKeUidGCvrJMxify+7dH1fDirEKP5mAT DiWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rs7L2atBWuphTJ3YV3N4pXmYujle3iQ048X1U78BZYg=; b=DUh6c90ExDBg1CYbftAwphsXD0sN0vIMO0hHl2pziYmg5dnDaijHHOAg0kSn5MNz6Z 2HJDl7B5dykIy41HJO7ZytzRrtogSZTiLxIGzpPFZz4jejJ2msdTLSddu+vUF+zDZXbS TqhL7bN0GOTLCEBMASmrBccJSDi2tYvQKsHytSbxcv9QmVNrlvAIiIoq2UyWUZ0aIyiC oAP/UcQJWXCqcvPO4/PHcBy2+LpS/bK2/b8Z5m0IYnBts/f8ekkThsexcCQv5HmoUPJL nZzwIF0kT07ddT4JHkxngXMS3H0Psxx4BZWez2M1ZnSzBZuv9dzwKADRjLt7vfRXR7NJ CuhQ== X-Gm-Message-State: AOAM530ccnmc9BzPsbIZ7K+eHOiyl0rrWdN4veLtLvU7D3jW3K77ojlw DuE5KuLGoV/slpnHAxJ3Xy8= X-Google-Smtp-Source: ABdhPJyIO+fWBnGNZvwGvAupoKWQ0BlxPNK2/lh0KscNelMnoA1nsCXHCH6XrQnSQ2pGkxmMslS2VQ== X-Received: by 2002:a17:90a:5901:: with SMTP id k1mr2581836pji.76.1638838309386; Mon, 06 Dec 2021 16:51:49 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:49 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 01/17] net: add networking namespace refcount tracker Date: Mon, 6 Dec 2021 16:51:26 -0800 Message-Id: <20211207005142.1688204-2-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet We have 100+ syzbot reports about netns being dismantled too soon, still unresolved as of today. We think a missing get_net() or an extra put_net() is the root cause. In order to find the bug(s), and be able to spot future ones, this patch adds CONFIG_NET_NS_REFCNT_TRACKER and new helpers to precisely pair all put_net() with corresponding get_net(). To use these helpers, each data structure owning a refcount should also use a "netns_tracker" to pair the get and put. Signed-off-by: Eric Dumazet --- include/linux/netdevice.h | 9 +-------- include/net/net_namespace.h | 34 ++++++++++++++++++++++++++++++++++ include/net/net_trackers.h | 18 ++++++++++++++++++ net/Kconfig.debug | 9 +++++++++ net/core/net_namespace.c | 3 +++ 5 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 include/net/net_trackers.h diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 69dca1edd5a60f4b9df79fbf8dcbc878440ab4b8..201d8c5be80685f89d7fdba4b61f83194beb9b13 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -48,7 +48,7 @@ #include #include #include -#include +#include struct netpoll_info; struct device; @@ -300,13 +300,6 @@ enum netdev_state_t { __LINK_STATE_TESTING, }; - -#ifdef CONFIG_NET_DEV_REFCNT_TRACKER -typedef struct ref_tracker *netdevice_tracker; -#else -typedef struct {} netdevice_tracker; -#endif - struct gro_list { struct list_head list; int count; diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index bb5fa59140321ba7c1826f5f4492e5cb607fd99f..5b61c462e534be468c81d2b0f4ef586b209dd4b8 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -87,6 +88,7 @@ struct net { struct idr netns_ids; struct ns_common ns; + struct ref_tracker_dir refcnt_tracker; struct list_head dev_base_head; struct proc_dir_entry *proc_net; @@ -240,6 +242,7 @@ void ipx_unregister_sysctl(void); #ifdef CONFIG_NET_NS void __put_net(struct net *net); +/* Try using get_net_track() instead */ static inline struct net *get_net(struct net *net) { refcount_inc(&net->ns.count); @@ -258,6 +261,7 @@ static inline struct net *maybe_get_net(struct net *net) return net; } +/* Try using put_net_track() instead */ static inline void put_net(struct net *net) { if (refcount_dec_and_test(&net->ns.count)) @@ -308,6 +312,36 @@ static inline int check_net(const struct net *net) #endif +static inline void netns_tracker_alloc(struct net *net, + netns_tracker *tracker, gfp_t gfp) +{ +#ifdef CONFIG_NET_NS_REFCNT_TRACKER + ref_tracker_alloc(&net->refcnt_tracker, tracker, gfp); +#endif +} + +static inline void netns_tracker_free(struct net *net, + netns_tracker *tracker) +{ +#ifdef CONFIG_NET_NS_REFCNT_TRACKER + ref_tracker_free(&net->refcnt_tracker, tracker); +#endif +} + +static inline struct net *get_net_track(struct net *net, + netns_tracker *tracker, gfp_t gfp) +{ + get_net(net); + netns_tracker_alloc(net, tracker, gfp); + return net; +} + +static inline void put_net_track(struct net *net, netns_tracker *tracker) +{ + netns_tracker_free(net, tracker); + put_net(net); +} + typedef struct { #ifdef CONFIG_NET_NS struct net *net; diff --git a/include/net/net_trackers.h b/include/net/net_trackers.h new file mode 100644 index 0000000000000000000000000000000000000000..d94c76cf15a9df918441b8ab4ed20422059f7ed9 --- /dev/null +++ b/include/net/net_trackers.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __NET_NET_TRACKERS_H +#define __NET_NET_TRACKERS_H +#include + +#ifdef CONFIG_NET_DEV_REFCNT_TRACKER +typedef struct ref_tracker *netdevice_tracker; +#else +typedef struct {} netdevice_tracker; +#endif + +#ifdef CONFIG_NET_NS_REFCNT_TRACKER +typedef struct ref_tracker *netns_tracker; +#else +typedef struct {} netns_tracker; +#endif + +#endif /* __NET_NET_TRACKERS_H */ diff --git a/net/Kconfig.debug b/net/Kconfig.debug index fb5c70e01cb3b6f86afce9a9f0aa8f8d7468e1fe..2f50611df858911cf5190a361e4e9316e543ed3a 100644 --- a/net/Kconfig.debug +++ b/net/Kconfig.debug @@ -8,3 +8,12 @@ config NET_DEV_REFCNT_TRACKER help Enable debugging feature to track device references. This adds memory and cpu costs. + +config NET_NS_REFCNT_TRACKER + bool "Enable networking namespace refcount tracking" + depends on DEBUG_KERNEL && STACKTRACE_SUPPORT + select REF_TRACKER + default n + help + Enable debugging feature to track netns references. + This adds memory and cpu costs. diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 202fa5eacd0f9bc74fc3246e9cebcd3419759ad5..9b7171c40434985b869c1477975fc75447d78c3b 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -311,6 +311,8 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns) LIST_HEAD(net_exit_list); refcount_set(&net->ns.count, 1); + ref_tracker_dir_init(&net->refcnt_tracker, 128); + refcount_set(&net->passive, 1); get_random_bytes(&net->hash_mix, sizeof(u32)); preempt_disable(); @@ -635,6 +637,7 @@ static DECLARE_WORK(net_cleanup_work, cleanup_net); void __put_net(struct net *net) { + ref_tracker_dir_exit(&net->refcnt_tracker); /* Cleanup the network namespace in process context */ if (llist_add(&net->cleanup_list, &cleanup_list)) queue_work(netns_wq, &net_cleanup_work); From patchwork Tue Dec 7 00:51:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660641 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3601C433F5 for ; Tue, 7 Dec 2021 00:51:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378740AbhLGAzV (ORCPT ); Mon, 6 Dec 2021 19:55:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378739AbhLGAzV (ORCPT ); Mon, 6 Dec 2021 19:55:21 -0500 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B19BC0613F8 for ; Mon, 6 Dec 2021 16:51:52 -0800 (PST) Received: by mail-pf1-x433.google.com with SMTP id o4so11709998pfp.13 for ; Mon, 06 Dec 2021 16:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Yje/NZCJNIzhe5Ma/sqymz5RSvBvVVnhMwTrhleT8ns=; b=hvYa5+vW0uPtLFClOPTJFJaZ/FNakERnVHRwTNV4j0TUPegnbaoIzkCMQm2e3zHV2Q Gg9eWWMg5xlAAxKXrYiAZJ38kCxk0860idD9iyrTb4+UQcG19VZQ2SCrNb0q4MP6KXEP /CMPPdqDxH2Pszj0K/EpLUbGkKqUFuUE00VC3Llr+BQQZpvt5s4W2jM1J4y5yg3QoVvD cYkN/tFs42FVCRU0H4w8U0T7YAF74GSCYusLj0liY/IGvCiZc4qRMXpEO+b4C9LRnAa7 AExv5A3DXu/NY3GdS9JWeX/HVogXpTg7rVAmmzJehNbuI2c8TjFDHYrWfRlH+9HBwrnl Sr3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yje/NZCJNIzhe5Ma/sqymz5RSvBvVVnhMwTrhleT8ns=; b=IT4yfD5Rt8xx826OA9IHQX82xRLaUvxGDz1LOfxC6MReGebj9BQEwBkxjnLJClyOra t/sLMI54QlJNwdP+reU6luHWScMNVjbm0oNRqzvdY4RQAXglxvVT1mj2H+XiLCBdMhsc jtsTV9dOcYZpzUpvJ4ccg6CqNjqsa7ULB71XJ2YBV3Yj3uX4os/Je5m/M6g+3xvToJbq zo6kENTGW1NnMSYfLAY/sSUxgWsDM8TzO2JdKfR39iCbq+aA2B6X1vQ2ZKURdyAswOTX 85dsHnPpCpxTss+o3ifatef8213USkJJs7iC1x0nBGR2gkOwAOKZawiHjLmgUSu/emeV Qv+Q== X-Gm-Message-State: AOAM5319gehvwc3kVLmc8OsfBfOrXssbb+mkwmQjn7hJB0KcUHzk0zau PDCW5+AXXEupo6pRHsaI5BU= X-Google-Smtp-Source: ABdhPJxc0eQD6gW1hgm8YQNFcTJJeUADAVu4jDh/exr2U30DENibMF+ASzO9dgB+ROE0UybH2RsnoA== X-Received: by 2002:a63:1442:: with SMTP id 2mr21353783pgu.16.1638838311592; Mon, 06 Dec 2021 16:51:51 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:51 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 02/17] net: add netns refcount tracker to struct sock Date: Mon, 6 Dec 2021 16:51:27 -0800 Message-Id: <20211207005142.1688204-3-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- include/net/sock.h | 2 ++ net/core/sock.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index ae61cd0b650de76d731c8f9b7f9050d9beb3d87e..5d8532f26208fbd05f5b1185afa87207c1c476c9 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -350,6 +350,7 @@ struct bpf_local_storage; * @sk_txtime_deadline_mode: set deadline mode for SO_TXTIME * @sk_txtime_report_errors: set report errors mode for SO_TXTIME * @sk_txtime_unused: unused txtime flags + * @ns_tracker: tracker for netns reference */ struct sock { /* @@ -538,6 +539,7 @@ struct sock { struct bpf_local_storage __rcu *sk_bpf_storage; #endif struct rcu_head sk_rcu; + netns_tracker ns_tracker; }; enum sk_pacing { diff --git a/net/core/sock.c b/net/core/sock.c index 4a499d255f401e61fff2fbab3b0fd9337da77f7e..1a6a925397906508a33e1443b1ec27ac19d036e1 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1983,7 +1983,7 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority, sock_lock_init(sk); sk->sk_net_refcnt = kern ? 0 : 1; if (likely(sk->sk_net_refcnt)) { - get_net(net); + get_net_track(net, &sk->ns_tracker, priority); sock_inuse_add(net, 1); } @@ -2039,7 +2039,7 @@ static void __sk_destruct(struct rcu_head *head) put_pid(sk->sk_peer_pid); if (likely(sk->sk_net_refcnt)) - put_net(sock_net(sk)); + put_net_track(sock_net(sk), &sk->ns_tracker); sk_prot_free(sk->sk_prot_creator, sk); } @@ -2126,7 +2126,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) /* SANITY */ if (likely(newsk->sk_net_refcnt)) { - get_net(sock_net(newsk)); + get_net_track(sock_net(newsk), &newsk->ns_tracker, priority); sock_inuse_add(sock_net(newsk), 1); } sk_node_init(&newsk->sk_node); From patchwork Tue Dec 7 00:51:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660643 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81BBAC433F5 for ; Tue, 7 Dec 2021 00:51:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378741AbhLGAzY (ORCPT ); Mon, 6 Dec 2021 19:55:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378738AbhLGAzX (ORCPT ); Mon, 6 Dec 2021 19:55:23 -0500 Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FF91C061746 for ; Mon, 6 Dec 2021 16:51:54 -0800 (PST) Received: by mail-pj1-x102e.google.com with SMTP id np3so9030840pjb.4 for ; Mon, 06 Dec 2021 16:51:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iqCYdj052fYTydLFbj8bY0QPq64SEhrx3lyjdG2q7JM=; b=CQsWCMLv1nJuNYFmaHGM9vErumgWi9/UnEbgEncd3TcWHoExCGiaVfrWKB7S3X836T 2G7u0SGrNzm/HHdtx3uEK1Hv+Z/rvBo5ByYMOwdueDrY7zptJJnOmgOgCvu4pSLBnv1A Y/8ATuQb7cey5jBgFWgGnNjUir/xVc43Htanl6QkX4MjrpNU3jruuAD7LoWqhXsOXXcF OgnjYtObTufHG86eGRfNG2z7rQcsAhJZWj5B2dO8q7CjzWTa9xTTX3gXUkbKoNjbj1TJ 835FRggIh89Xla8P+fVpyPYD7EnteAkWZgeVWddQKeE8aCwiNLZQ0zHtNVqAaFWPoc3w tNJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iqCYdj052fYTydLFbj8bY0QPq64SEhrx3lyjdG2q7JM=; b=VTDR2h6ezAANCdjqoiFsYj4iOOXARPm7u0t4FUFWI9GdKGWRIEKIuNMtHkeHvD8O5d IkRxTBJL4iEVJ/d+o5shdbSy7Al3s/81BW1lQqxP1TNjOHvU91DvrzOvG1w0Nq154qFT WyzL1WlzlUm5Wgb6GzoW6kjIn9PPLBbicuK8e4NaaZqJMAPbIy60YXKfKPEX25ChYZHB JznJXIX4S7Nq5LBbRdGfKH7vRrxt4+tv0EX7Xmc9bxyKyHX3DPTWTQY6L/kRf3ZMSWgp CAs0YXPFn/1ANd3H7ov44JrRPxr0RI5f8MGIIGg4Xb/Kf8339RY4jzWL+znh/KJ/oqUt 3bjQ== X-Gm-Message-State: AOAM532pru+hH7zxvAcMlA/Pl+2vLMzcHt8Pl35YFE25fXdYNOqtTY1s U2I612QvcaGYO/Gnkldh7Es= X-Google-Smtp-Source: ABdhPJwCQQFp4YkMCIxqZCnDMWaq1TTji7zU68UqFowzTJ/WcT5zcj4mwp3i+ekd4K/dJCxfggkebg== X-Received: by 2002:a17:90b:4a0e:: with SMTP id kk14mr2591697pjb.42.1638838313682; Mon, 06 Dec 2021 16:51:53 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:53 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 03/17] net: add netns refcount tracker to struct seq_net_private Date: Mon, 6 Dec 2021 16:51:28 -0800 Message-Id: <20211207005142.1688204-4-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- fs/proc/proc_net.c | 19 ++++++++++++++++--- include/linux/seq_file_net.h | 3 ++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index 15c2e55d2ed2c4b8b00209ecf9b18caa1a47f1b7..39b823ab2564edf62fd08983ec44560b1120ee24 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -61,15 +61,27 @@ static int seq_open_net(struct inode *inode, struct file *file) } #ifdef CONFIG_NET_NS p->net = net; + netns_tracker_alloc(net, &p->ns_tracker, GFP_KERNEL); #endif return 0; } +static void seq_file_net_put_net(struct seq_file *seq) +{ +#ifdef CONFIG_NET_NS + struct seq_net_private *priv = seq->private; + + put_net_track(priv->net, &priv->ns_tracker); +#else + put_net(&init_net); +#endif +} + static int seq_release_net(struct inode *ino, struct file *f) { struct seq_file *seq = f->private_data; - put_net(seq_file_net(seq)); + seq_file_net_put_net(seq); seq_release_private(ino, f); return 0; } @@ -87,7 +99,8 @@ int bpf_iter_init_seq_net(void *priv_data, struct bpf_iter_aux_info *aux) #ifdef CONFIG_NET_NS struct seq_net_private *p = priv_data; - p->net = get_net(current->nsproxy->net_ns); + p->net = get_net_track(current->nsproxy->net_ns, &p->ns_tracker, + GFP_KERNEL); #endif return 0; } @@ -97,7 +110,7 @@ void bpf_iter_fini_seq_net(void *priv_data) #ifdef CONFIG_NET_NS struct seq_net_private *p = priv_data; - put_net(p->net); + put_net_track(p->net, &p->ns_tracker); #endif } diff --git a/include/linux/seq_file_net.h b/include/linux/seq_file_net.h index 0fdbe1ddd8d1bd53269c4ca49297544860f3d3e5..b97912fdbae78304be7c3c45c862dce880e08dd4 100644 --- a/include/linux/seq_file_net.h +++ b/include/linux/seq_file_net.h @@ -9,7 +9,8 @@ extern struct net init_net; struct seq_net_private { #ifdef CONFIG_NET_NS - struct net *net; + struct net *net; + netns_tracker ns_tracker; #endif }; From patchwork Tue Dec 7 00:51:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660645 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A9DDC433EF for ; Tue, 7 Dec 2021 00:51:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378743AbhLGAzZ (ORCPT ); Mon, 6 Dec 2021 19:55:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbhLGAzZ (ORCPT ); Mon, 6 Dec 2021 19:55:25 -0500 Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 132D4C061746 for ; Mon, 6 Dec 2021 16:51:56 -0800 (PST) Received: by mail-pg1-x536.google.com with SMTP id q16so12074861pgq.10 for ; Mon, 06 Dec 2021 16:51:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tywiGhRxZ+CAj26AzF1n0UBYubicZtdRU8HSzaFGn/c=; b=ntCvzCtib317ku61TNl7/Jzx0BJFnLNolv+oLxtEbydwW6m6LP7jGaRulCNbdF1igq 1Cn72hK+LAkgamZgGO9s/cF8/N9QcG6ptJ5iM6n7g+FWgdbw5Wt/lJOegbl0AqcaUN5M RuVIVHHT7+vAjaxtshWmK9vHufAlrnbsmWF/aIKpaNBzdj/jLa8JdaCOvsh/x9mkSy46 U9IVLU4TffwSHbEL4FH4YcyWTXMgnwpLyLe5/f+ogizyXgIpsZFDkCwIrCvtKypYofRp /21wLxaDCFO4PxPGMS9I5r14rBWz3djbO3RWc9yDHCyJYGFcxItV/1C3ZzXQ8bWWYXne PC6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tywiGhRxZ+CAj26AzF1n0UBYubicZtdRU8HSzaFGn/c=; b=EdGEr/jAlMXo2FH4ZkudWjf/TWvFewBJHDhYKkhNvrlxqW8DpyeXmCp9HqfWeJpwOe sQCUgqKnShT0KARuvJLsjO//V2Q4n2xWgOxWix/KIZEKE01jNCmZoT3WT4LiZlG50rjZ 8oPg57klzMedv3AlsgDH9nlRGKocfpO4YayWhyBrIGg2esekarpxuwGwgTS9z+FSz3zR IwJWs6TGevAgflMGxIKzHTnu6w346FxhAhrPJNwAEsITf1qUpu4mIsAy8uJxIWLIL+XB BvdvmxFAg/eDIw80lYi88WY9SXIrEjfPAwsR15JB8wzSkZn/yWSyDbg4fhQLrpp8tfah Lmew== X-Gm-Message-State: AOAM531eevxeqSis9nD1g3c2gPPObMsRlr4QJfB2gdmQwYdE5vOYMTd8 iir1Vyx8lGtDqGRZ54BeH+Q= X-Google-Smtp-Source: ABdhPJw5nw4orHOPA4p7HKvyyXLnc54qUbZsNhFQ01lXMCnJy04/kOlpcAMVmzFC+5hezcqpXBMbkw== X-Received: by 2002:a63:f410:: with SMTP id g16mr21121410pgi.423.1638838315652; Mon, 06 Dec 2021 16:51:55 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:55 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 04/17] net: sched: add netns refcount tracker to struct tcf_exts Date: Mon, 6 Dec 2021 16:51:29 -0800 Message-Id: <20211207005142.1688204-5-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- include/net/pkt_cls.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 193f88ebf629bd5a66c2d155346b40695e259a13..cebc1bd713b68e9c9c7b7656f569e749c0dc9297 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -202,7 +202,8 @@ struct tcf_exts { __u32 type; /* for backward compat(TCA_OLD_COMPAT) */ int nr_actions; struct tc_action **actions; - struct net *net; + struct net *net; + netns_tracker ns_tracker; #endif /* Map to export classifier specific extension TLV types to the * generic extensions API. Unsupported extensions must be set to 0. @@ -218,6 +219,7 @@ static inline int tcf_exts_init(struct tcf_exts *exts, struct net *net, exts->type = 0; exts->nr_actions = 0; exts->net = net; + netns_tracker_alloc(net, &exts->ns_tracker, GFP_KERNEL); exts->actions = kcalloc(TCA_ACT_MAX_PRIO, sizeof(struct tc_action *), GFP_KERNEL); if (!exts->actions) @@ -236,6 +238,8 @@ static inline bool tcf_exts_get_net(struct tcf_exts *exts) { #ifdef CONFIG_NET_CLS_ACT exts->net = maybe_get_net(exts->net); + if (exts->net) + netns_tracker_alloc(exts->net, &exts->ns_tracker, GFP_KERNEL); return exts->net != NULL; #else return true; @@ -246,7 +250,7 @@ static inline void tcf_exts_put_net(struct tcf_exts *exts) { #ifdef CONFIG_NET_CLS_ACT if (exts->net) - put_net(exts->net); + put_net_track(exts->net, &exts->ns_tracker); #endif } From patchwork Tue Dec 7 00:51:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660647 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C707C433F5 for ; Tue, 7 Dec 2021 00:51:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378748AbhLGAz2 (ORCPT ); Mon, 6 Dec 2021 19:55:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbhLGAz1 (ORCPT ); Mon, 6 Dec 2021 19:55:27 -0500 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BE0DC061746 for ; Mon, 6 Dec 2021 16:51:58 -0800 (PST) Received: by mail-pl1-x62f.google.com with SMTP id u17so8233149plg.9 for ; Mon, 06 Dec 2021 16:51:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=POVsHtE5goGeXMDmUT4eCInTWhGc9g0JPMiRMUW/pEs=; b=iPDo0iNyT0phH4vtrt0xm9FE3B5Fl9+9UGZbrh65DNgfmxwLSIPJoX17GkLbOvQLVG Hn6E2hO2fWc9Vt9iP+S0mA6lIWq1gkilvYj1zilJkSYYotbDpq4VtJOQ7hS0wyJrv9Do DEZqhRnb2HA4oXMHgJ7TpOw6YowVYhLZq110TZvi6FrzFcTUpqVrWiR7Ka0phyKyOPFi uIPE6buDCdKWfVWgtjPMnq4xom36gWfA8Sb1nAYDJPx7ercdeNdIQ8deoo39iBgKz1Sr SGzPQTNVBmJ/qH1K34y+y4+oV847gSMVBr79EUug28Xz5vISCBKObXtCUiAQKdMz70z3 jF5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=POVsHtE5goGeXMDmUT4eCInTWhGc9g0JPMiRMUW/pEs=; b=UDbMvJHQwHrf5oGMSf+omwrmve79YZMr1nzi4J5DnfPtWfvOroOnf1uzLnwccRLCSA clZqJi8kz9LKlVAyGr//Kk40Sp4+/MuMevjlvbb7TyrSjbA3fjglt2JF+9N1YJljlmm6 LQ3h5KkWm1bvP+TXHPTqxqj5j7LRRjVIqsHp2mtvd0J4oBeMFVicH7W1txyc4Iwc1cs5 J5bQPs+MnGTgUBHoUtRmf8Z0kOX2zAN8/OOARTBSwA9kbvOxybUiVAGIKhZP7CzczWwI QSgZ3BQt16duOXsQoUElRcU3mi6oroUFU4+e3AhRxxUn1io+Ny04u9zPQzgQ6ND2UViM JP/g== X-Gm-Message-State: AOAM533C2TWsZpCydFa4FDpQgINiseXM2N2yhsSS/qgDxuOdmaKQQK/D XSIwxVDW+ayPyWhKAiWXC+k= X-Google-Smtp-Source: ABdhPJxMaWPNId/XUHtvwHWlB1YZIqt203RpzSslR0l3StolvOAXq/49aba2ub4V1DVzoQ/xCBfF4Q== X-Received: by 2002:a17:90b:4c44:: with SMTP id np4mr2543243pjb.195.1638838317636; Mon, 06 Dec 2021 16:51:57 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:57 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 05/17] netfilter: nfnetlink: add netns refcount tracker to struct nfulnl_instance Date: Mon, 6 Dec 2021 16:51:30 -0800 Message-Id: <20211207005142.1688204-6-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- net/netfilter/nfnetlink_log.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index 691ef4cffdd907cf09d3a7e680ebe83ea5562ee0..7a3a91fc7ffaaf7c632692949a990f5867173e5c 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c @@ -66,6 +66,7 @@ struct nfulnl_instance { struct sk_buff *skb; /* pre-allocatd skb */ struct timer_list timer; struct net *net; + netns_tracker ns_tracker; struct user_namespace *peer_user_ns; /* User namespace of the peer process */ u32 peer_portid; /* PORTID of the peer process */ @@ -140,7 +141,7 @@ static void nfulnl_instance_free_rcu(struct rcu_head *head) struct nfulnl_instance *inst = container_of(head, struct nfulnl_instance, rcu); - put_net(inst->net); + put_net_track(inst->net, &inst->ns_tracker); kfree(inst); module_put(THIS_MODULE); } @@ -187,7 +188,7 @@ instance_create(struct net *net, u_int16_t group_num, timer_setup(&inst->timer, nfulnl_timer, 0); - inst->net = get_net(net); + inst->net = get_net_track(net, &inst->ns_tracker, GFP_ATOMIC); inst->peer_user_ns = user_ns; inst->peer_portid = portid; inst->group_num = group_num; From patchwork Tue Dec 7 00:51:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660649 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39EE0C433FE for ; Tue, 7 Dec 2021 00:52:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378753AbhLGAz3 (ORCPT ); Mon, 6 Dec 2021 19:55:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbhLGAz3 (ORCPT ); Mon, 6 Dec 2021 19:55:29 -0500 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 057D4C061746 for ; Mon, 6 Dec 2021 16:52:00 -0800 (PST) Received: by mail-pj1-x1035.google.com with SMTP id f18-20020a17090aa79200b001ad9cb23022so1250753pjq.4 for ; Mon, 06 Dec 2021 16:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QHc+3KMzO/IXeML/pk2azuwtgD5APwxFUb3/0O1vz9Y=; b=QiJeyyxP9Ne/LFm7t+mDBvArEbmGWkiB2JvdAASpAjUMpsqFKjA/nDmJcMNlaWu0MT pP7tRJ2n51LuqpOuWDq6E/JLwcJb7fHlX4WpLoOUaxMuPIfEe4uCQUZraaTT8Bwpsz4r hxgZSHTaWXmiqY9s0NBIk8vUarcOx96z0yUpxe+Wd313z4oLRbbTwi8JBPvHbXQxR2fT 86QMRrthfcreTdI5UdPnhuBt+K8AgnQ6zYCR7zUL4A6klz21S2HhzPx1+7CWU7jSfytm KCEwodxPAjZCoyApJzgsgXl3gv1KYWbj1S5BemwKGaCxLfHL6h+rDQtf9H68r7Doj1aV yKrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QHc+3KMzO/IXeML/pk2azuwtgD5APwxFUb3/0O1vz9Y=; b=zfyIaf7N/lYvLH9OEVH928rZ8sajrfnDAYgK0P03UCPnC4NiloATPAjD24l8Qilzz7 sym0ASShoyeDkpeaT/mrnbCcs0pr/GyuaJbYMqBK90blfMWsNIfiDI7fcN2O6QdReDDB b6JdM7ti6tdKf/7/gVx6me3fV9Po9cSZmIxrS5wvFsVUfIj2UD3+t3VKarIAzCjpsTnN tuWkKu9+Tu5mvNY1PcNi1LmY2RidraBhncXxOA8rCG/pTuKIvdoeWYAfd+zJ8dHylmJu m9yMsMm1tUyvoRPPGaCyMfAxt84U3k6Fg+E5AOXX89YaRLZly/dg7bpuej2FAGdcK9fK GUgw== X-Gm-Message-State: AOAM5319TyUAner2v+qQx6dhqJHrJ9inpBh4u8o+AURS9Ohv33pdat5Z 759jZPCaWIpQxXMyEs5Yspc= X-Google-Smtp-Source: ABdhPJxUuVm09oHzBm7SR4GJdk6E7iUX8wvO9atBDF8r+eBBVGs48eexFy6jHkSZHt2ffKGZO8qf2A== X-Received: by 2002:a17:902:dacc:b0:142:12bd:c5b9 with SMTP id q12-20020a170902dacc00b0014212bdc5b9mr48169818plx.74.1638838319623; Mon, 06 Dec 2021 16:51:59 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.51.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:51:59 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 06/17] l2tp: add netns refcount tracker to l2tp_dfs_seq_data Date: Mon, 6 Dec 2021 16:51:31 -0800 Message-Id: <20211207005142.1688204-7-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- net/l2tp/l2tp_debugfs.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/net/l2tp/l2tp_debugfs.c b/net/l2tp/l2tp_debugfs.c index acf6e1343b88e070004f422e00d8fc697b4e4130..9d1aafe75f92dd7643c6908b83f4eb60ea79b025 100644 --- a/net/l2tp/l2tp_debugfs.c +++ b/net/l2tp/l2tp_debugfs.c @@ -32,7 +32,8 @@ static struct dentry *rootdir; struct l2tp_dfs_seq_data { - struct net *net; + struct net *net; + netns_tracker ns_tracker; int tunnel_idx; /* current tunnel */ int session_idx; /* index of session within current tunnel */ struct l2tp_tunnel *tunnel; @@ -281,7 +282,7 @@ static int l2tp_dfs_seq_open(struct inode *inode, struct file *file) rc = PTR_ERR(pd->net); goto err_free_pd; } - + netns_tracker_alloc(pd->net, &pd->ns_tracker, GFP_KERNEL); rc = seq_open(file, &l2tp_dfs_seq_ops); if (rc) goto err_free_net; @@ -293,7 +294,7 @@ static int l2tp_dfs_seq_open(struct inode *inode, struct file *file) return rc; err_free_net: - put_net(pd->net); + put_net_track(pd->net, &pd->ns_tracker); err_free_pd: kfree(pd); goto out; @@ -307,7 +308,7 @@ static int l2tp_dfs_seq_release(struct inode *inode, struct file *file) seq = file->private_data; pd = seq->private; if (pd->net) - put_net(pd->net); + put_net_track(pd->net, &pd->ns_tracker); kfree(pd); seq_release(inode, file); From patchwork Tue Dec 7 00:51:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660651 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4269EC433F5 for ; Tue, 7 Dec 2021 00:52:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378758AbhLGAzb (ORCPT ); Mon, 6 Dec 2021 19:55:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378755AbhLGAzb (ORCPT ); Mon, 6 Dec 2021 19:55:31 -0500 Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A88D5C061746 for ; Mon, 6 Dec 2021 16:52:01 -0800 (PST) Received: by mail-pj1-x102f.google.com with SMTP id fv9-20020a17090b0e8900b001a6a5ab1392so1257290pjb.1 for ; Mon, 06 Dec 2021 16:52:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uESlj0SebAtKU58T3/hnoy0rgiCsLFjX0HarrZvJTjA=; b=haFKdNKhWZ7RDgW2RRvl9yFR8dDodOEaL6bjjQOBnrpxqr9NjszWNCjW7ANYvOhZlt 43OWPwnz6asXKb69WA361zSxbJlwHCiI2kJhw0U/4uO4C98c4mC1WacNV3Ayel1JcYxR wV2DFL5ChInIqsrhE/94UGjIxf1pRpfaimImIB21x1noQWS2vrKSMgEyY7pF31meIFyu hFtsyjX8J+osbGNXI+fWbBpk7lf0+1UNjlUJ9BBMVzHBUwolmAwEh3AoWjF5TH2pjcR2 Tq3qCUyW3hnvW+6OwpMqxdMnhM0HCYRbAvCFCx6B+OmhCsHEEBlxXi10tw+eSysHfp9Q cGKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uESlj0SebAtKU58T3/hnoy0rgiCsLFjX0HarrZvJTjA=; b=eD36uxJR/g8GPsOGLGBF5wTjUG1hWEMN1gl1+EnjvWjX//l27E5coeOsNhBCWIaiyP amrn+Zg9P74BOzTdg7M9TV55nnokhTd/SEGfWRvxb2nLBfEmb6rakeU7nIiM10OU0KvO sEIKt2PYpct3ia93ZzmoIvILRkJTjCEnw1oNPZNWA+yLUGoBdc5UdkbdmujTam9JOR3T QkpTOsuHQHyRrbxNK+LOi35o+bNNkglbUmGNx5U9poc0JnkDqUewwMUBwYgqwUJFXE2S g9UTQ2WB02N7h7zjAEBuwKHcntD2x4MfGyFUQAJEdYk3NmGIF5VeKKpHnfrf02ls5swE +NWw== X-Gm-Message-State: AOAM530zGmeFp7//HM13GroLMFOHx0bIJ3u3gmYwx5TdxRr5r1wk6U2u uGfSHvTvlEP6DbK+iF2KCj3OG5OWDxg= X-Google-Smtp-Source: ABdhPJzyjt0421vYQqqxvbnO2ypT/fAwqKUObJqA53kvOV0QTDCqzZFXqR05UAr5355OOEioGDJ6Og== X-Received: by 2002:a17:902:ba84:b0:142:5514:8dd7 with SMTP id k4-20020a170902ba8400b0014255148dd7mr47877218pls.87.1638838321229; Mon, 06 Dec 2021 16:52:01 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:00 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 07/17] ppp: add netns refcount tracker Date: Mon, 6 Dec 2021 16:51:32 -0800 Message-Id: <20211207005142.1688204-8-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- drivers/net/ppp/ppp_generic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index 1180a0e2445fbfb3204fea785f1c1cf48bc77141..9e52c5d2d77fce39b230605ec96fed9798858a13 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -173,6 +173,7 @@ struct channel { spinlock_t downl; /* protects `chan', file.xq dequeue */ struct ppp *ppp; /* ppp unit we're connected to */ struct net *chan_net; /* the net channel belongs to */ + netns_tracker ns_tracker; struct list_head clist; /* link in list of channels per unit */ rwlock_t upl; /* protects `ppp' and 'bridge' */ struct channel __rcu *bridge; /* "bridged" ppp channel */ @@ -2879,7 +2880,7 @@ int ppp_register_net_channel(struct net *net, struct ppp_channel *chan) pch->ppp = NULL; pch->chan = chan; - pch->chan_net = get_net(net); + pch->chan_net = get_net_track(net, &pch->ns_tracker, GFP_KERNEL); chan->ppp = pch; init_ppp_file(&pch->file, CHANNEL); pch->file.hdrlen = chan->hdrlen; @@ -3519,7 +3520,7 @@ ppp_disconnect_channel(struct channel *pch) */ static void ppp_destroy_channel(struct channel *pch) { - put_net(pch->chan_net); + put_net_track(pch->chan_net, &pch->ns_tracker); pch->chan_net = NULL; atomic_dec(&channel_count); From patchwork Tue Dec 7 00:51:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660653 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CEEC1C433EF for ; Tue, 7 Dec 2021 00:52:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378791AbhLGAzd (ORCPT ); Mon, 6 Dec 2021 19:55:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbhLGAzc (ORCPT ); Mon, 6 Dec 2021 19:55:32 -0500 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 677B7C061746 for ; Mon, 6 Dec 2021 16:52:03 -0800 (PST) Received: by mail-pj1-x1035.google.com with SMTP id np3so9031032pjb.4 for ; Mon, 06 Dec 2021 16:52:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/d8nwCdhAWoeqFwhelhs0ajxIL9Dr7l9LAWxv+OUSP4=; b=oa+1fme953nX69A5u7mCAggq3t8kuFqiOfOOb+FOXPJojAZ8TaTCY8VSPNsKTi3gyw 7FmIpfHrEiJZouWSv7z4k9yr++vL2+nrgTKib1diyo877Cp/l7xuBLvpBY26Wjjs/qk3 9GIZ9bDy5yMUoGbnowxzTqqKWShtBzdC4lMV7OLYNRRnwETWS3syMgT/fABtn2CV9A4V wrEsVK4ukj/RLHSS2ylSZVt1CFO1UbP63GcN+ekk9I03+fTmRGZVd5m7PBnDrUxarmuw w/AZPJ7uvBAoCvgMCujO2n+1nu6N1fx+54I9dNdhh0T6uzkl2RfobOioRG9LsQYe0w91 PTRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/d8nwCdhAWoeqFwhelhs0ajxIL9Dr7l9LAWxv+OUSP4=; b=uK0M3jH6/BZ+ZoBhOsXmWp0HGL5qhmZjM+DGM8u7f8pLG6zTUeVyqmPy/UhbvIOWX1 ie6PBZcQYCA+isYtqE9ifACwxPxYm+89AR7meedVcT7U80unIelk7v5CltJ590UiSAI3 NaTx0EC/61lM24qugsmYJl1wEYmAybX4pw9ay0QZQqWJtdSk0xyzI0zaH6XCCiPMDU4n wMsQydsr3xzGzdnurCY+DIqz2QirK42SuKipaZaTnUZO9q/v3XPGLGCam+SBiEB76b+b Vr55/EqKrRCdjREzNlkpxwdNPt/WWWhyQ42M4wAnm4zvl7F3LBCToWsybXhzoGNGIPR1 VAwQ== X-Gm-Message-State: AOAM530jB+M8XlIsw1KX1ZzZHTSnTlMZDiOqV+ml/t2qLR8d7IVurJPJ WolLvhDy6BDjAih2abuT9ck= X-Google-Smtp-Source: ABdhPJwaYFLsdZDULH9fxCHZfE/TLbs1qmVhSjJeNrhU3OpDPAHnh2Hkqc4YHyp44c0d2kwxPxWKZg== X-Received: by 2002:a17:90b:1a87:: with SMTP id ng7mr2590278pjb.230.1638838323018; Mon, 06 Dec 2021 16:52:03 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:02 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 08/17] netfilter: nf_nat_masquerade: add netns refcount tracker to masq_dev_work Date: Mon, 6 Dec 2021 16:51:33 -0800 Message-Id: <20211207005142.1688204-9-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- net/netfilter/nf_nat_masquerade.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/netfilter/nf_nat_masquerade.c b/net/netfilter/nf_nat_masquerade.c index acd73f717a0883d791fc351851a98bac4144705f..e32fac374608576d6237f80b1bff558e9453585a 100644 --- a/net/netfilter/nf_nat_masquerade.c +++ b/net/netfilter/nf_nat_masquerade.c @@ -12,6 +12,7 @@ struct masq_dev_work { struct work_struct work; struct net *net; + netns_tracker ns_tracker; union nf_inet_addr addr; int ifindex; int (*iter)(struct nf_conn *i, void *data); @@ -82,7 +83,7 @@ static void iterate_cleanup_work(struct work_struct *work) nf_ct_iterate_cleanup_net(w->net, w->iter, (void *)w, 0, 0); - put_net(w->net); + put_net_track(w->net, &w->ns_tracker); kfree(w); atomic_dec(&masq_worker_count); module_put(THIS_MODULE); @@ -119,6 +120,7 @@ static void nf_nat_masq_schedule(struct net *net, union nf_inet_addr *addr, INIT_WORK(&w->work, iterate_cleanup_work); w->ifindex = ifindex; w->net = net; + netns_tracker_alloc(net, &w->ns_tracker, gfp_flags); w->iter = iter; if (addr) w->addr = *addr; From patchwork Tue Dec 7 00:51:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660655 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5726C433F5 for ; Tue, 7 Dec 2021 00:52:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378792AbhLGAzf (ORCPT ); Mon, 6 Dec 2021 19:55:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbhLGAze (ORCPT ); Mon, 6 Dec 2021 19:55:34 -0500 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28338C061746 for ; Mon, 6 Dec 2021 16:52:05 -0800 (PST) Received: by mail-pj1-x1032.google.com with SMTP id n15-20020a17090a160f00b001a75089daa3so649515pja.1 for ; Mon, 06 Dec 2021 16:52:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JVLblEXWrRl5NFNiudFx6U8kUBQLbNtS9v+jeY8mzB4=; b=dFTvp/owneCRMoUC2yw86unakEf7vhlH25x9xWmxfj9cGbHE6K9Jjtj+rSt9IzcO7u hPF2unZCxJBiwtKcAkCqc5jaLX1mE5OME173iQtQZuX+/aMX/CgorrrqedPs6il4Rral WPQNTWsWNMVOJ/P6hgAaFTqQITcr7il4hHLk+DTZhfcNiGkF5HDYfIc9nJKBMRt1TKaH qDhB2Bvyu4hVTV5R5y0cvXcwL+3cFU6wSenrYoGfKGuB3jwZHTL9AX/eJKCIGXzWF8CG at0Iumc9/EI3JvdXsnkXcfEH/bRcCRAjkkMD41VcwMUuoT47GViGNi580T4YGfhCuFw2 N1BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JVLblEXWrRl5NFNiudFx6U8kUBQLbNtS9v+jeY8mzB4=; b=2Y3IYXZ+ZmK7HJYB0tqCO/vcy3WFQoCsPT72n39EEPp5cyQoDbNsLi1o1gYBAjtFr7 Sx0M57jo5RxMmQJUpRGXdBqr8vYPwIcNLmDjnWPT0XvMB0HLjy5l9tzBLYCYh5YKPwYV 8NtxzHwTvvfn5gXZv3F2+poBl3/eR/5HOCw4/f7T7N/smYrVINhItX6cutkl94dSsCtW 1XWSLGdv3Ry7Pba2wDF4RbfNCy+i84nJewqQMtpqKSQcuWvc8cUSOIk3Fyua306r5Hrm a7ByGhwC3yW9d7qqUd4c8kOzDxzFWjbcdjdlE8iOt8puYyexPxRMVcTbEgRJrBYN+dJR 6Kuw== X-Gm-Message-State: AOAM53110LAD8m1C6mPTVlDpi4IG+ewz+X+jXT7kb176h8Lh7oZxOBAf ZKJUUZMQjaCDdz0FqAzCey67k7l63jI= X-Google-Smtp-Source: ABdhPJzuzKNdxX+m5Znm/MRv/Whj2O3iihnVLYWh+kLzc77RzSUVMxmQhkk7KHP9qSPO+IoL2x8guQ== X-Received: by 2002:a17:90b:3ec2:: with SMTP id rm2mr2601425pjb.1.1638838324735; Mon, 06 Dec 2021 16:52:04 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:04 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 09/17] SUNRPC: add netns refcount tracker to struct svc_xprt Date: Mon, 6 Dec 2021 16:51:34 -0800 Message-Id: <20211207005142.1688204-10-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet struct svc_xprt holds a long lived reference to a netns, it is worth tracking it. Signed-off-by: Eric Dumazet --- include/linux/sunrpc/svc_xprt.h | 1 + net/sunrpc/svc_xprt.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index 571f605bc91ef8fa190e7fd5504efb76ec3fa89e..382af90320acc3a7b3817bf66f65fbb15447ae7d 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h @@ -88,6 +88,7 @@ struct svc_xprt { struct list_head xpt_users; /* callbacks on free */ struct net *xpt_net; + netns_tracker ns_tracker; const struct cred *xpt_cred; struct rpc_xprt *xpt_bc_xprt; /* NFSv4.1 backchannel */ struct rpc_xprt_switch *xpt_bc_xps; /* NFSv4.1 backchannel */ diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index 1e99ba1b9d723d007ec3a00044b5ff922b7d8e56..16ae461fad1412dfc34192dcbdad494910a147f7 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -161,7 +161,7 @@ static void svc_xprt_free(struct kref *kref) if (test_bit(XPT_CACHE_AUTH, &xprt->xpt_flags)) svcauth_unix_info_release(xprt); put_cred(xprt->xpt_cred); - put_net(xprt->xpt_net); + put_net_track(xprt->xpt_net, &xprt->ns_tracker); /* See comment on corresponding get in xs_setup_bc_tcp(): */ if (xprt->xpt_bc_xprt) xprt_put(xprt->xpt_bc_xprt); @@ -197,7 +197,7 @@ void svc_xprt_init(struct net *net, struct svc_xprt_class *xcl, mutex_init(&xprt->xpt_mutex); spin_lock_init(&xprt->xpt_lock); set_bit(XPT_BUSY, &xprt->xpt_flags); - xprt->xpt_net = get_net(net); + xprt->xpt_net = get_net_track(net, &xprt->ns_tracker, GFP_ATOMIC); strcpy(xprt->xpt_remotebuf, "uninitialized"); } EXPORT_SYMBOL_GPL(svc_xprt_init); From patchwork Tue Dec 7 00:51:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660657 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 790F0C433FE for ; Tue, 7 Dec 2021 00:52:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378742AbhLGAzh (ORCPT ); Mon, 6 Dec 2021 19:55:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378793AbhLGAzg (ORCPT ); Mon, 6 Dec 2021 19:55:36 -0500 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9A17C061746 for ; Mon, 6 Dec 2021 16:52:06 -0800 (PST) Received: by mail-pl1-x629.google.com with SMTP id u11so8247561plf.3 for ; Mon, 06 Dec 2021 16:52:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Oo3SQ3B9ieo0QEtOiGHTeKsb094AAyXG2Ek3u3c49+s=; b=h5GDIR808ji9DixtVBtOGDYHWJG1W2RQ4oW7W5OJq2XWnVuHeV6D+70VH9nw8FUznc ci1ntGHc7nqzgGAELyvOiWqF8bJ5WjKCuYgNaav07coQYgNCl0fxxtQCv6X7yTTPVz9O HIXngHzGAA+DSECvxw4TTVoqyI782L0IQOfcWXPzsCG58lJeFb1HN8gp56cOy6+g7NMp 5tzNBKjb8BykkMOh4emoaeJ6A6XOZ8nIM6snoIxheHfZuRMsMO1+jON2Q21g2We0T+Nm +11ZMp8ttuSWLmf8jfX2M7fFadBUyx1h7Dx8c73v9u9r82rXXUkTpCoaNtLApeFCcK0Y T1sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Oo3SQ3B9ieo0QEtOiGHTeKsb094AAyXG2Ek3u3c49+s=; b=q93fTi6bilVXJaLpSmBX2UJbjHT9aYr+DSIZ9j2hL8RnWQnmuwJzBV/H83UYoWaIyM tWGCifBR9MnqD6z1FjtpyXZ+AVeTM7+B3RNwHJORrXOZMIlZGF3HOvqwSzWNE2CKSbjQ SegKmZGKelWWq1JAZoxVzbO9Ir8eZurtPOSwmUCI/KfkbnXIYadPsI9202DS8NgXUtFP CAZ6eUwGFCc3zjic5ZiJ2dD+0wygjBiN1x65XiMg+uuAL24nwNICHJKqqkUnCj2UYzTV Lja/pmiw2gsCZDx1vab+CjOo7UxxftjmVTqQTSxZt/9l1eb1FvIfv0T4A0c6PGowcNlV nwNQ== X-Gm-Message-State: AOAM5339bWtC5IuLW4pFLKzGUpCdOQ9+pQucfP8X43mW0Z0LDlFkC1Se sPYPEhPB+mWshZQuZ+jL1W1xxvMRN4Q= X-Google-Smtp-Source: ABdhPJwjPpCf7bLJHH1nRdUOS3/FeKCfLDtb9jPUgMYcgcv/9UQ4XDvwWHJy69AdhTtAVSIKgQd9YA== X-Received: by 2002:a17:90a:8c0f:: with SMTP id a15mr2538254pjo.25.1638838326361; Mon, 06 Dec 2021 16:52:06 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:06 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 10/17] SUNRPC: add netns refcount tracker to struct gss_auth Date: Mon, 6 Dec 2021 16:51:35 -0800 Message-Id: <20211207005142.1688204-11-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- net/sunrpc/auth_gss/auth_gss.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 5f42aa5fc612850b526c160ab5e5c75416862676..8eb7e8544815a8bc20a79b21b01e3ba110fc6b47 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c @@ -72,7 +72,8 @@ struct gss_auth { struct gss_api_mech *mech; enum rpc_gss_svc service; struct rpc_clnt *client; - struct net *net; + struct net *net; + netns_tracker ns_tracker; /* * There are two upcall pipes; dentry[1], named "gssd", is used * for the new text-based upcall; dentry[0] is named after the @@ -1013,7 +1014,8 @@ gss_create_new(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt) goto err_free; } gss_auth->client = clnt; - gss_auth->net = get_net(rpc_net_ns(clnt)); + gss_auth->net = get_net_track(rpc_net_ns(clnt), &gss_auth->ns_tracker, + GFP_KERNEL); err = -EINVAL; gss_auth->mech = gss_mech_get_by_pseudoflavor(flavor); if (!gss_auth->mech) @@ -1068,7 +1070,7 @@ gss_create_new(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt) err_put_mech: gss_mech_put(gss_auth->mech); err_put_net: - put_net(gss_auth->net); + put_net_track(gss_auth->net, &gss_auth->ns_tracker); err_free: kfree(gss_auth->target_name); kfree(gss_auth); @@ -1084,7 +1086,7 @@ gss_free(struct gss_auth *gss_auth) gss_pipe_free(gss_auth->gss_pipe[0]); gss_pipe_free(gss_auth->gss_pipe[1]); gss_mech_put(gss_auth->mech); - put_net(gss_auth->net); + put_net_track(gss_auth->net, &gss_auth->ns_tracker); kfree(gss_auth->target_name); kfree(gss_auth); From patchwork Tue Dec 7 00:51:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660659 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 515CEC433F5 for ; Tue, 7 Dec 2021 00:52:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378798AbhLGAzj (ORCPT ); Mon, 6 Dec 2021 19:55:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378794AbhLGAzh (ORCPT ); Mon, 6 Dec 2021 19:55:37 -0500 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 92D8CC061746 for ; Mon, 6 Dec 2021 16:52:08 -0800 (PST) Received: by mail-pl1-x62c.google.com with SMTP id u17so8233379plg.9 for ; Mon, 06 Dec 2021 16:52:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9Zc2YOENyna59s9F+jXNxajOLswRmrXDrTODOS7cUfE=; b=P8MZuJVO4rgFZLeJz2kmRBL29o8HFpajTyIcNWdSz5tT8EX7PSpVKUJ1YA97gDJclK bl8KKpLpakx5mokYsS8TBCy3EYkuHxXBDzp2dloJ0fJOOpmoayqPcrpYNiogEUsPu+Fi 0IJCAN2ICB5drGJayXHu2K4RxR1qM3M0JAvij0vMFTYqcBx2o1UdEcO7qLZ2uZAEqqOK Zn+QepwwYOnaGAsqjCcGcIS2876oG8ctov8Bdd4+jfsHvFnvHAXWEoTRGtc5BRz+03Mt 87OZPFM7AyDaqVnc2zzon4psUWARIkwJ8agCG59DrkUzLb2Ks4Qmli6cQ2va6XWHmGQJ 8lNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9Zc2YOENyna59s9F+jXNxajOLswRmrXDrTODOS7cUfE=; b=KvzpTZjNZk9ZuwoSH2XPbjzANKTuPe/Xli7oCMGoLcXlIvw9xldjxbrAP4qj5ijXyk 7F9nxUFPhzanm0OWXdX1qcGoru1yOxi4wnXcMVWw78sy1iGzVqKRnQ+pf81VAVE4yeCD v4jqDuGEzo3vrMw4rh1OJqlFCH8BIBDTRhi+y/dxss4VIEhVsBtfOv+OxWMXP1jnPHTo +LBDcc9O89Hv5/IHHxJoMhFKpJscLGmM+54iOZWSt9BxK9UgNJqblHHLlkeElOidpoU6 NoZIOXwcV0HWhCD0nvyEjDB2GKm9as8GZsEIAPKpwJxi5KmQ3cT8OfWApZElhIUHIr2m ILYQ== X-Gm-Message-State: AOAM531UaIoRX2s9IPeauYJFw8l7YLc0dAIRuZ2qPeaKqqv8VY4igTb9 VT4bb+BJB/9Q8ND9ZQaZTD6r64/yt7c= X-Google-Smtp-Source: ABdhPJz8BtyLc6SJOrpjBNjoEele2FLkWs4wRACd1noydawaX2bc92Cgzyqbs8475nExh8JJfcwLEA== X-Received: by 2002:a17:90a:df14:: with SMTP id gp20mr2540093pjb.186.1638838328189; Mon, 06 Dec 2021 16:52:08 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:07 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 11/17] SUNRPC: add netns refcount tracker to struct rpc_xprt Date: Mon, 6 Dec 2021 16:51:36 -0800 Message-Id: <20211207005142.1688204-12-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- include/linux/sunrpc/xprt.h | 1 + net/sunrpc/xprt.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 955ea4d7af0b2fea1300a46fad963df35f25810c..3cdc8d878d81122e3318447df4770100500403e4 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h @@ -284,6 +284,7 @@ struct rpc_xprt { } stat; struct net *xprt_net; + netns_tracker ns_tracker; const char *servername; const char *address_strings[RPC_DISPLAY_MAX]; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index a02de2bddb28b48bb6798327c0814e769314621b..5af484d6ba5e8bfb871768122009ee330c708c04 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1835,7 +1835,7 @@ EXPORT_SYMBOL_GPL(xprt_alloc); void xprt_free(struct rpc_xprt *xprt) { - put_net(xprt->xprt_net); + put_net_track(xprt->xprt_net, &xprt->ns_tracker); xprt_free_all_slots(xprt); xprt_free_id(xprt); rpc_sysfs_xprt_destroy(xprt); @@ -2027,7 +2027,7 @@ static void xprt_init(struct rpc_xprt *xprt, struct net *net) xprt_init_xid(xprt); - xprt->xprt_net = get_net(net); + xprt->xprt_net = get_net_track(net, &xprt->ns_tracker, GFP_KERNEL); } /** From patchwork Tue Dec 7 00:51:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660661 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1CF6BC433EF for ; Tue, 7 Dec 2021 00:52:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378794AbhLGAzk (ORCPT ); Mon, 6 Dec 2021 19:55:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378808AbhLGAzj (ORCPT ); Mon, 6 Dec 2021 19:55:39 -0500 Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48C24C0613F8 for ; Mon, 6 Dec 2021 16:52:10 -0800 (PST) Received: by mail-pf1-x435.google.com with SMTP id 8so11760336pfo.4 for ; Mon, 06 Dec 2021 16:52:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9YQkC001jm5+AZXpQuowUVkY71S7JFvjcdhVqMkJ144=; b=IMDJwshWO0G6hmdZptDA5Pf9KiGahHJIPG38RGx4+BhX7FQWGPYiRYwBOGz+TrVz0W d5JFEYhRvNSYTH3l45nC5EYX0jLEpeXl7xfs9pfTI4Z74z71EO5Oey2m6MyOAwbyKrEH Ypf/Hmo59JMuklyJVzyKRRbS4HTd/QJNXehZCRH6WYRAnAYa2FiCETa0huDd+e+EcYsA rdMlpVuKJZ0lGDTR1S5lkKGn6rjPju4Y11w7C5k2xF8mRYI/RUNreooH2oKZb3X+2Ai/ 51xTrUN2BJ/I1GScT++oNyc5JLdDgj86LmZbio3ISolGM+mgDcZQOoogr7eTGY4mRuDl HEQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9YQkC001jm5+AZXpQuowUVkY71S7JFvjcdhVqMkJ144=; b=Jtxf7Gz+l0kRtsFSg9usOR+0HEN5z0PSza//61QSyc3Px09TCwldCKPTajMJUaz7Ja N4z7ojNAb8k2rXjn+ICwRhBOSb8OV/Pv6iA3dasHnSqdHGBBkyRTihPqjo+XH1Je3Dmq Nf2x3tALc0xaeFuRfLQIxJY8JufX1+UKpl3SoW1/U6lZyA0umUGZMAacFngycf2mxzKo DlZmIb+ma8O4QHK9XeRe9GxK9YKaJ/3FDfSHrwJODAXdArtEgllNsSgp58EvkgHg2GPO 7LwAYG8MCbWk34YaQaUtqpdEVlzhvKlNczX+Ytr6j02bTsWdEXD/AfqGbY5xTGPuJhzq 1ovQ== X-Gm-Message-State: AOAM530xfij1Znf72/zA8dyfiYcvq1T9MySVk0rhJFGlS4fmEOjv4dyC HQsWzI5Pc+2bhUQCqVO+3qDGUH3kMNY= X-Google-Smtp-Source: ABdhPJypKphAXfR0KJfNaojyjVYAJetINVvButfeLTPEvpyOfh1yMrDA+jAL5/mYsUJKVzZNZKTFPQ== X-Received: by 2002:a63:e256:: with SMTP id y22mr6729166pgj.72.1638838329826; Mon, 06 Dec 2021 16:52:09 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:09 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 12/17] net: initialize init_net earlier Date: Mon, 6 Dec 2021 16:51:37 -0800 Message-Id: <20211207005142.1688204-13-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet While testing the following patch in the series ("net: add netns refcount tracker to struct nsproxy") I found that devtmpfs_init() was called before init_net was initialized. This is a bug, because devtmpfs_setup() calls ksys_unshare(CLONE_NEWNS); This has the effect of increasing init_net refcount, which will be later overwritten to 1, as part of setup_net(&init_net) We had too many prior patches [1] trying to work around the root cause. Really, make sure init_net is in BSS section, and that net_ns_init() is called earlier at boot time. Note that this following patchn in the series ("vfs: add netns refcount tracker to struct fs_context") also will need net_ns_init() being called before vfs_caches_init() This saves around 4KB in .data section. [1] f8c46cb39079 ("netns: do not call pernet ops for not yet set up init_net namespace") b5082df8019a ("net: Initialise init_net.count to 1") 734b65417b24 ("net: Statically initialize init_net.dev_base_head") Signed-off-by: Eric Dumazet --- include/net/net_namespace.h | 6 ++++++ init/main.c | 2 ++ net/core/dev.c | 3 +-- net/core/net_namespace.c | 17 +++++------------ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 5b61c462e534be468c81d2b0f4ef586b209dd4b8..2ecbd7c11c88e016b1a6a450f07ee2cd94048f62 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -513,4 +513,10 @@ static inline void fnhe_genid_bump(struct net *net) atomic_inc(&net->fnhe_genid); } +#ifdef CONFIG_NET +void net_ns_init(void); +#else +static inline net_ns_init(void) {} +#endif + #endif /* __NET_NET_NAMESPACE_H */ diff --git a/init/main.c b/init/main.c index bb984ed79de0ea49b9a298c209c0c2f7e6f70941..cb68bc48a682c73340ceca28c2ba02fac1dda09d 100644 --- a/init/main.c +++ b/init/main.c @@ -99,6 +99,7 @@ #include #include #include +#include #include #include @@ -1113,6 +1114,7 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void) key_init(); security_init(); dbg_late_init(); + net_ns_init(); vfs_caches_init(); pagecache_init(); signals_init(); diff --git a/net/core/dev.c b/net/core/dev.c index 4420086f3aeb34614fc8222206dff2b2caa31d02..2ee7c87aa2ec8638131169d73a3ec699d5b292b3 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -10720,8 +10720,7 @@ static int __net_init netdev_init(struct net *net) BUILD_BUG_ON(GRO_HASH_BUCKETS > 8 * sizeof_field(struct napi_struct, gro_bitmask)); - if (net != &init_net) - INIT_LIST_HEAD(&net->dev_base_head); + INIT_LIST_HEAD(&net->dev_base_head); net->dev_name_head = netdev_create_hash(); if (net->dev_name_head == NULL) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 9b7171c40434985b869c1477975fc75447d78c3b..3ea5321430ee21af687510917da9b9aea5154e12 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -44,13 +44,7 @@ EXPORT_SYMBOL_GPL(net_rwsem); static struct key_tag init_net_key_domain = { .usage = REFCOUNT_INIT(1) }; #endif -struct net init_net = { - .ns.count = REFCOUNT_INIT(1), - .dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head), -#ifdef CONFIG_KEYS - .key_domain = &init_net_key_domain, -#endif -}; +struct net init_net; EXPORT_SYMBOL(init_net); static bool init_net_initialized; @@ -1082,7 +1076,7 @@ static void rtnl_net_notifyid(struct net *net, int cmd, int id, u32 portid, rtnl_set_sk_err(net, RTNLGRP_NSID, err); } -static int __init net_ns_init(void) +void __init net_ns_init(void) { struct net_generic *ng; @@ -1103,6 +1097,9 @@ static int __init net_ns_init(void) rcu_assign_pointer(init_net.gen, ng); +#ifdef CONFIG_KEYS + init_net.key_domain = &init_net_key_domain; +#endif down_write(&pernet_ops_rwsem); if (setup_net(&init_net, &init_user_ns)) panic("Could not setup the initial network namespace"); @@ -1117,12 +1114,8 @@ static int __init net_ns_init(void) RTNL_FLAG_DOIT_UNLOCKED); rtnl_register(PF_UNSPEC, RTM_GETNSID, rtnl_net_getid, rtnl_net_dumpid, RTNL_FLAG_DOIT_UNLOCKED); - - return 0; } -pure_initcall(net_ns_init); - static void free_exit_list(struct pernet_operations *ops, struct list_head *net_exit_list) { ops_pre_exit_list(ops, net_exit_list); From patchwork Tue Dec 7 00:51:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660663 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BBD70C433EF for ; Tue, 7 Dec 2021 00:52:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378796AbhLGAzn (ORCPT ); Mon, 6 Dec 2021 19:55:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378800AbhLGAzl (ORCPT ); Mon, 6 Dec 2021 19:55:41 -0500 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CEFE6C061746 for ; Mon, 6 Dec 2021 16:52:11 -0800 (PST) Received: by mail-pl1-x632.google.com with SMTP id b13so8252303plg.2 for ; Mon, 06 Dec 2021 16:52:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rzeVbBk6mNMUa39F92ZO1gz2trjRQLibN7tHPyYXxoU=; b=RP5TGjPeHPEOPPsQqbGrpFwtl9SVQLEbXg/RPceO3Ww9Pk8tlFQodO3pwpFYePXVzv oYqGEJ+8qYdY6MtH5qeDZd/mFkxOxDEdRceXXnQLGR35kpx2Tl7+hrO1Kns8zlrlqZl3 05CzeXSH7s47nzXD3r7HZa3fgpWkqOoyAz+a5VZJglPv1s9+G6aoNOukmPAUwMKkRWfe I6ZkdqVnCqROD1YdsPSvDncAxNsAUQlxYiAXEhHTCMqROj8pxuGAMQF38/Xh6zi5SDkq aFCpOTrMo5faelVlDSaDuZ4v4CxcC3WhjIsSqxI1kPqPYCDuaQgq7/WDeqvjbfOdKbut m3Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rzeVbBk6mNMUa39F92ZO1gz2trjRQLibN7tHPyYXxoU=; b=rgXKxLN87gzZTeCgYA81F4HYdKh/to/6NfFEhExRxcZHkEIlA8+h/tRz3G1q7+xkd6 EPDJwrrA60O+uPROc9BZg4UPK+7JFvme8WkFKQT9CaH4lVTfx4LnQXPmXDdH9reAiz2T TOT6I7ObNeZx631j3ZWJJgtvA0TtQLS39/MzEhAIPwYfdbMm0/6z6LjiXW0CBetptqK0 zK/w1zn+DNKN5oeiCvI7kQ58uKE3pmzXRKlobEbK6NTFpXxqMS3wEYzb80i0+uy5Nxbi +iySqXVNmKiTbJ5Ylqhs7HcgDMpu4q/TMEuTaMWy56gksYMbvmLNoq8+EaEAGQkdCOah yIAA== X-Gm-Message-State: AOAM53247qDDP93xdVkCJ2TKGbF0W/BoB6e54gjrHgKJ9FzqYsWUBe5z AJMMdvuL5ShS1bmPKJbwu2g= X-Google-Smtp-Source: ABdhPJzoX17cv059lJWzcwW6yj9J63MLca0X3nnbswOdOq8zm0Wei76dEoAJMUpIrYaYrhR1HwagIg== X-Received: by 2002:a17:90b:4f86:: with SMTP id qe6mr2529374pjb.224.1638838331413; Mon, 06 Dec 2021 16:52:11 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:11 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 13/17] net: add netns refcount tracker to struct nsproxy Date: Mon, 6 Dec 2021 16:51:38 -0800 Message-Id: <20211207005142.1688204-14-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- include/linux/nsproxy.h | 2 ++ kernel/nsproxy.c | 5 +++-- net/core/net_namespace.c | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h index cdb171efc7cb052dd4844ae182206939627c68e8..eed7768daf428cfede70f438ecd366af23da85f2 100644 --- a/include/linux/nsproxy.h +++ b/include/linux/nsproxy.h @@ -4,6 +4,7 @@ #include #include +#include struct mnt_namespace; struct uts_namespace; @@ -35,6 +36,7 @@ struct nsproxy { struct mnt_namespace *mnt_ns; struct pid_namespace *pid_ns_for_children; struct net *net_ns; + netns_tracker ns_tracker; struct time_namespace *time_ns; struct time_namespace *time_ns_for_children; struct cgroup_namespace *cgroup_ns; diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c index eec72ca962e249c94266192b77a3c1f92ec8e889..8b50e8153bc8957b47e2fce860aacce4e9f56616 100644 --- a/kernel/nsproxy.c +++ b/kernel/nsproxy.c @@ -112,6 +112,7 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, err = PTR_ERR(new_nsp->net_ns); goto out_net; } + netns_tracker_alloc(new_nsp->net_ns, &new_nsp->ns_tracker, GFP_KERNEL); new_nsp->time_ns_for_children = copy_time_ns(flags, user_ns, tsk->nsproxy->time_ns_for_children); @@ -124,7 +125,7 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, return new_nsp; out_time: - put_net(new_nsp->net_ns); + put_net_track(new_nsp->net_ns, &new_nsp->ns_tracker); out_net: put_cgroup_ns(new_nsp->cgroup_ns); out_cgroup: @@ -200,7 +201,7 @@ void free_nsproxy(struct nsproxy *ns) if (ns->time_ns_for_children) put_time_ns(ns->time_ns_for_children); put_cgroup_ns(ns->cgroup_ns); - put_net(ns->net_ns); + put_net_track(ns->net_ns, &ns->ns_tracker); kmem_cache_free(nsproxy_cachep, ns); } diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 3ea5321430ee21af687510917da9b9aea5154e12..962062ad8cc4697ff6791aea7c48aea0b5db94a5 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -1355,8 +1355,8 @@ static int netns_install(struct nsset *nsset, struct ns_common *ns) !ns_capable(nsset->cred->user_ns, CAP_SYS_ADMIN)) return -EPERM; - put_net(nsproxy->net_ns); - nsproxy->net_ns = get_net(net); + put_net_track(nsproxy->net_ns, &nsproxy->ns_tracker); + nsproxy->net_ns = get_net_track(net, &nsproxy->ns_tracker, GFP_KERNEL); return 0; } From patchwork Tue Dec 7 00:51:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660665 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 290C4C433FE for ; Tue, 7 Dec 2021 00:52:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378801AbhLGAzn (ORCPT ); Mon, 6 Dec 2021 19:55:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378815AbhLGAzm (ORCPT ); Mon, 6 Dec 2021 19:55:42 -0500 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DEBFC0613F8 for ; Mon, 6 Dec 2021 16:52:13 -0800 (PST) Received: by mail-pl1-x62c.google.com with SMTP id u11so8247718plf.3 for ; Mon, 06 Dec 2021 16:52:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hWumiZx7P2cYyxkqj8MeKD2gSwwFhLpbzMigSDdLAyw=; b=moo9wzjl00VOCwaEwN9wJOSA+vB3ZCq2I656FFCrBoLAS2AO24ikK8qZi1TTZneQWw zHuhrVe9TK0A9Bu9WJZ51TuaqeNUdlHAY24Mk4ncnFDy3jlGfyIJMHzw7MfNL2gER7Al TYkcTqh/oFRbWYFg34DLX8eq/4WWcaek/yHPXXP+XURNsE0Bydx/3AIwhxpuec/UZgsh iveqvLB/JmYATnRe65O86tkdmBi1/tKKZxkEZCdAYxtd8CL3TTi4WT95zd/8fO7zxcGh UwBJlRr9dvuM8ZP1nbe4N6lciMhgOjHokrzr/Fy9GvBArx1yltLB9/9lxACBcayIwONQ d/dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hWumiZx7P2cYyxkqj8MeKD2gSwwFhLpbzMigSDdLAyw=; b=fR/y/rtSRS9+KkhYBtyem7tOe+7jzl+UwGAHBQcveL+hr4XBaUg6pq2VztOWo5Sj6p Cm3OxhdclGrP6wdWwSh1L04yMQwZsT735J9o31x7wYugzn4pAI99+9py8pEs6UQ64uW3 aecqzjaQx32aXfYc864izHITka/MoBClqiwk93amM7HAZGN7NyyEx/v9EzkdIfBCwlxx KDAKxFbb8tICne7SvwEI5cHeFS6XzA4YIEhq7ByL2IxmK0/TqT0QxzMxsjVgHz/kfk4B uvev8C0zSdc1zcWieoe3dJ4mnC28k/74Zyi8R2+TOT3xT5f8Xil6XSOvOgZidmFtrAUO +MNg== X-Gm-Message-State: AOAM532wdUGmqOr65oNb3kPpEcyaFyuJrm29ggL0ZkE7RIPV5MBnbK8m PtPU6zFJZ6SyFG3d+kpSXmA= X-Google-Smtp-Source: ABdhPJwwHarcRg8pnworbQq/bPnuJyJcNNruRMSySxBrWQ9XTyCSrh8mde0khlyVFhwwoJ+DOHDPsg== X-Received: by 2002:a17:90a:e7d0:: with SMTP id kb16mr2600241pjb.22.1638838333178; Mon, 06 Dec 2021 16:52:13 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:12 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 14/17] vfs: add netns refcount tracker to struct fs_context Date: Mon, 6 Dec 2021 16:51:39 -0800 Message-Id: <20211207005142.1688204-15-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- fs/afs/mntpt.c | 5 +++-- fs/fs_context.c | 7 ++++--- fs/nfs/fs_context.c | 5 +++-- fs/nfs/namespace.c | 5 +++-- include/linux/fs_context.h | 2 ++ 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c index bbb2c210d139d9033e83e39f0c4778de83afc694..c67474607604cc8096cfe343893994fe4153ffb4 100644 --- a/fs/afs/mntpt.c +++ b/fs/afs/mntpt.c @@ -78,8 +78,9 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt) int ret; if (fc->net_ns != src_as->net_ns) { - put_net(fc->net_ns); - fc->net_ns = get_net(src_as->net_ns); + put_net_track(fc->net_ns, &fc->ns_tracker); + fc->net_ns = get_net_track(src_as->net_ns, &fc->ns_tracker, + GFP_KERNEL); } if (src_as->volume && src_as->volume->type == AFSVL_RWVOL) { diff --git a/fs/fs_context.c b/fs/fs_context.c index b7e43a780a625bca1b0faeba53e2702463ad0496..06ece7c4b4c295cd1d918378597a23ac3a3cb13e 100644 --- a/fs/fs_context.c +++ b/fs/fs_context.c @@ -263,7 +263,8 @@ static struct fs_context *alloc_fs_context(struct file_system_type *fs_type, fc->sb_flags_mask = sb_flags_mask; fc->fs_type = get_filesystem(fs_type); fc->cred = get_current_cred(); - fc->net_ns = get_net(current->nsproxy->net_ns); + fc->net_ns = get_net_track(current->nsproxy->net_ns, + &fc->ns_tracker, GFP_KERNEL); fc->log.prefix = fs_type->name; mutex_init(&fc->uapi_mutex); @@ -355,7 +356,7 @@ struct fs_context *vfs_dup_fs_context(struct fs_context *src_fc) fc->source = NULL; fc->security = NULL; get_filesystem(fc->fs_type); - get_net(fc->net_ns); + get_net_track(fc->net_ns, &fc->ns_tracker, GFP_KERNEL); get_user_ns(fc->user_ns); get_cred(fc->cred); if (fc->log.log) @@ -469,7 +470,7 @@ void put_fs_context(struct fs_context *fc) fc->ops->free(fc); security_free_mnt_opts(&fc->security); - put_net(fc->net_ns); + put_net_track(fc->net_ns, &fc->ns_tracker); put_user_ns(fc->user_ns); put_cred(fc->cred); put_fc_log(fc); diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c index 0d444a90f513a9fa6d2cef1748a7218575a38d84..ea0bd82a29ecb498d995ef74b1a4c0fc1832116d 100644 --- a/fs/nfs/fs_context.c +++ b/fs/nfs/fs_context.c @@ -1531,8 +1531,9 @@ static int nfs_init_fs_context(struct fs_context *fc) ctx->nfs_server.addrlen); if (fc->net_ns != net) { - put_net(fc->net_ns); - fc->net_ns = get_net(net); + put_net_track(fc->net_ns, &fc->ns_tracker); + fc->net_ns = get_net_track(net, &fc->ns_tracker, + GFP_KERNEL); } ctx->nfs_mod = nfss->nfs_client->cl_nfs_mod; diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c index 3295af4110f1b1c5890f110c3d49424a3d19406f..8c630907d1eff2f7199d32d6becee4c10259473d 100644 --- a/fs/nfs/namespace.c +++ b/fs/nfs/namespace.c @@ -170,8 +170,9 @@ struct vfsmount *nfs_d_automount(struct path *path) goto out_fc; if (fc->net_ns != client->cl_net) { - put_net(fc->net_ns); - fc->net_ns = get_net(client->cl_net); + put_net_track(fc->net_ns, &fc->ns_tracker); + fc->net_ns = get_net_track(client->cl_net, + &fc->ns_tracker, GFP_KERNEL); } /* for submounts we want the same server; referrals will reassign */ diff --git a/include/linux/fs_context.h b/include/linux/fs_context.h index 6b54982fc5f378ec704f56def2fdb299e7d8b42d..9099bf7769c6db04b649d319502aec1b17d3d236 100644 --- a/include/linux/fs_context.h +++ b/include/linux/fs_context.h @@ -13,6 +13,7 @@ #include #include #include +#include struct cred; struct dentry; @@ -96,6 +97,7 @@ struct fs_context { struct dentry *root; /* The root and superblock */ struct user_namespace *user_ns; /* The user namespace for this mount */ struct net *net_ns; /* The network namespace for this mount */ + netns_tracker ns_tracker; /* Tracker for @net_ns reference */ const struct cred *cred; /* The mounter's credentials */ struct p_log log; /* Logging buffer */ const char *source; /* The source name (eg. dev path) */ From patchwork Tue Dec 7 00:51:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660667 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A02EC433EF for ; Tue, 7 Dec 2021 00:52:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378803AbhLGAzq (ORCPT ); Mon, 6 Dec 2021 19:55:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378805AbhLGAzo (ORCPT ); Mon, 6 Dec 2021 19:55:44 -0500 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E937C061746 for ; Mon, 6 Dec 2021 16:52:15 -0800 (PST) Received: by mail-pl1-x630.google.com with SMTP id q17so8223074plr.11 for ; Mon, 06 Dec 2021 16:52:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UdPDwq8o61e7G20ZR30qlNL+N7paQ2mCgzDyN9fgfok=; b=Vnf9Ic7ou7Ywh4dPcqA1fCTw3cAYcQ5drF9YAHkZn/+uI2x9G/waXB1TBHmEbJofAF REclTMdcWcqiG7pIV6tsWioUOV+eU/f8DbZXQSCDcBlsaEY+VYqrQf/3QejwdQhCYgjv kMHSvJ/5W6WeYxtEF/IZ2NqOr2B5M7bPUy785BlqDeyZo5wRB6bxGs/aHbuaWVpUoVtA CxF9m5HPbTWHMKqjIoRacYDTQrGgTW6niM1hCA/j1RgV6YlhkNkktg7zIZ/J74J7BhMw X5iYZ1X9uXNiYEj7j9nuLXQ+1y5wwULdKvkkDL/mfc7cbAHrF0bk7VDG1BLy06GXhjB6 9kvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UdPDwq8o61e7G20ZR30qlNL+N7paQ2mCgzDyN9fgfok=; b=2WVjrWxWLgdQSDDfCv/9fNIAdRKwzAEgzRY6bYmsmxfLCG4k7U2DAcY/mD8529ePgt qPpfyNFPyC8wkXjW4mecQuOXK4Bza8LywjXG7nB9f31tEsF0IV88XoM0w8c2Be9n4HDb Me18OqvBJBkIpI2FeQNmq5ypJBXOdyLhCmLnXgu6OWViouO9enJ7jhrkLnGIJucWXIAX 0yuELvRM4AR3VMQd7emTdjrh1Dt/dEM3TDlfb7bzSLHkESS0j2x5ZVdCXVzYc0DalNbA vL1QHP1SJ2wYFnLYhJCINoC5x8Kg+UsAGI8OtdMXrnkgM+j15pkFvjF5bkEgLAe/C3Kq lRXg== X-Gm-Message-State: AOAM530SJBseO54HceWxBxszQMAKlMzzMAHN7z50qah2UaRVluH0qUdG Lzi5gztIOLkus7tp9BwfFbQ= X-Google-Smtp-Source: ABdhPJwutXFl+VfpKFht4WNUYX7JtfH+QbJ+H/40E2b7xxflacFMKn8FSEZ/aXoc4hMCpEMdYIsMVQ== X-Received: by 2002:a17:90a:8c0a:: with SMTP id a10mr2589485pjo.58.1638838334913; Mon, 06 Dec 2021 16:52:14 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:14 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 15/17] audit: add netns refcount tracker to struct audit_net Date: Mon, 6 Dec 2021 16:51:40 -0800 Message-Id: <20211207005142.1688204-16-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- kernel/audit.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/audit.c b/kernel/audit.c index 121d37e700a62b53854c06199d9a89850ec39dd4..27013414847678af4283484feab2461e3d9c67ed 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -96,6 +96,7 @@ struct audit_net { * @pid: auditd PID * @portid: netlink portid * @net: the associated network namespace + * ns_tracker: tracker for @net reference * @rcu: RCU head * * Description: @@ -106,6 +107,7 @@ struct auditd_connection { struct pid *pid; u32 portid; struct net *net; + netns_tracker ns_tracker; struct rcu_head rcu; }; static struct auditd_connection __rcu *auditd_conn; @@ -481,7 +483,7 @@ static void auditd_conn_free(struct rcu_head *rcu) ac = container_of(rcu, struct auditd_connection, rcu); put_pid(ac->pid); - put_net(ac->net); + put_net_track(ac->net, &ac->ns_tracker); kfree(ac); } @@ -508,7 +510,7 @@ static int auditd_set(struct pid *pid, u32 portid, struct net *net) return -ENOMEM; ac_new->pid = get_pid(pid); ac_new->portid = portid; - ac_new->net = get_net(net); + ac_new->net = get_net_track(net, &ac_new->ns_tracker, GFP_KERNEL); spin_lock_irqsave(&auditd_conn_lock, flags); ac_old = rcu_dereference_protected(auditd_conn, From patchwork Tue Dec 7 00:51:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660669 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA3FFC433F5 for ; Tue, 7 Dec 2021 00:52:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378811AbhLGAzr (ORCPT ); Mon, 6 Dec 2021 19:55:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378824AbhLGAzq (ORCPT ); Mon, 6 Dec 2021 19:55:46 -0500 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E477DC0613F8 for ; Mon, 6 Dec 2021 16:52:16 -0800 (PST) Received: by mail-pl1-x630.google.com with SMTP id b11so8211322pld.12 for ; Mon, 06 Dec 2021 16:52:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HMp4O+Iz3SGdy9klc9PTcFjplbcGCBUGfPXbAYR+zrU=; b=EnvDPrXdT2ddThaoGsQIEhwFYkBu9HQWyfBRMX/lSm7rH8Q99B1uNxoiadIQIxDovk tVJcUKm1/n/xzABt+WQy72EWVx7ilNU5h3u4znA+vJQwL5JiNsgGGmAWi5G+Z6X0sPvo klQNV0CKGJmku8+FqX1P5qqNQo+w66q1GnxmW9Wz0rjZ7Rn3LtYwnHSnQOnuZGkTYkYi MGQ4bOmQgwHcYHrasClL2gooilsIZZVBeEt4BhHw5BJb95tSjTwuuTPjff/eHzjAIfiY JhFXwXsewofEZbsnnvOFH9XEEaxm6srCJZ9rd7xPqFumesH4wdoV81KbSREi0tScCETB Oycg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HMp4O+Iz3SGdy9klc9PTcFjplbcGCBUGfPXbAYR+zrU=; b=2jTdchGuUmApaA7OAtz06mKA3VMQ3zjsY+GNMYy2alVBTrjAT8P6Bcv1qR/eTySGNH X6Kw9koxBiBKT5CUno1MtToZwuxa0QXJr7TmI+Wg5QEzZG2Ubf8euzjVFPUGjAMG9PPH Q/ukqbwPU7uZ67/q1fdfw3UqBV+Uu0tssfad/id36HD2345/6WT9uSQ6T/bpyFlhMtwg 885IUxwpNpbMH3UAsP+RgC5MaJ+wTR69x/qr7ktWCwb4byrVtwcxu7QFp43NnzmwnftV HGL/CSTLfE+33ar4EHgLeKXjepEObL6IJRtARctgW3pMtyBbBujBeYSqELl8h3VWXbAl njog== X-Gm-Message-State: AOAM531HGhzPtPR3nGpmC27KZYn47qXit1YNrKg21ytSUi++1n2iAlh/ E/o8ZBrX5l7xsxYVOzwrM5I= X-Google-Smtp-Source: ABdhPJxKWw2f2Fz6AlDeW9bAC4C6vSotpNn8oYitNfdhbJwL116+QczZuxWju/IHrNfd2IY6Rll9oA== X-Received: by 2002:a17:90a:b107:: with SMTP id z7mr2569267pjq.104.1638838336543; Mon, 06 Dec 2021 16:52:16 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:16 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 16/17] audit: add netns refcount tracker to struct audit_reply Date: Mon, 6 Dec 2021 16:51:41 -0800 Message-Id: <20211207005142.1688204-17-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- kernel/audit.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/audit.c b/kernel/audit.c index 27013414847678af4283484feab2461e3d9c67ed..493365899d205c12338323b5a6ca6a30609a3d6a 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -207,6 +207,7 @@ struct audit_buffer { struct audit_reply { __u32 portid; struct net *net; + netns_tracker ns_tracker; struct sk_buff *skb; }; @@ -938,7 +939,7 @@ static void audit_free_reply(struct audit_reply *reply) kfree_skb(reply->skb); if (reply->net) - put_net(reply->net); + put_net_track(reply->net, &reply->ns_tracker); kfree(reply); } @@ -982,7 +983,8 @@ static void audit_send_reply(struct sk_buff *request_skb, int seq, int type, int reply->skb = audit_make_reply(seq, type, done, multi, payload, size); if (!reply->skb) goto err; - reply->net = get_net(sock_net(NETLINK_CB(request_skb).sk)); + reply->net = get_net_track(sock_net(NETLINK_CB(request_skb).sk), + &reply->ns_tracker, GFP_KERNEL); reply->portid = NETLINK_CB(request_skb).portid; tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply"); From patchwork Tue Dec 7 00:51:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 12660671 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 879F0C4332F for ; Tue, 7 Dec 2021 00:52:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378823AbhLGAzs (ORCPT ); Mon, 6 Dec 2021 19:55:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378808AbhLGAzr (ORCPT ); Mon, 6 Dec 2021 19:55:47 -0500 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C7BAC061746 for ; Mon, 6 Dec 2021 16:52:18 -0800 (PST) Received: by mail-pl1-x634.google.com with SMTP id b11so8211359pld.12 for ; Mon, 06 Dec 2021 16:52:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2fENHn91gxqW1qNG15mioT3jCj/d4w48+WpCz+57dP4=; b=St1uFNUD0HumITr2pW1Dltzkb8/RrHIWw6vhcD+XdfD3zLy6MrTYUvRDMBUb/E0j1E RlF4ZbXwiyG35+bWx/9cHz99QsKMjCCifop6kGrQLzQTZKeC9Na/C2pSGQAq2QqAAYy8 /gde1IjHs0eDZ/c65cJwMkvxZ67C8eICAFyJQ1T/gRAThN8T6RTUciQm0JUjbM5D4Kf+ DQ5A25nlQYOdIlxHlScIinBSGw0QtUX64MbvFr8MBwb6sL/XCWefu4RPG9EuQLN0zCxM m9eblEb0ZF2K8K1FaB0QtOj2b7kLBCWOJqY0Z3cvt6f93uaILDBf/PN/x55nU51e5xd1 +z4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2fENHn91gxqW1qNG15mioT3jCj/d4w48+WpCz+57dP4=; b=6ukFYyowOKP3fo1XZm5EUvlupje9+KmxxBcLtwlcLWV13Yvbp1ijinI7PmRStSPj7s OON3GHRc3Af8HaurcQTSHao9Ztiv22t87vF3ziO8FnCeHDq0qWphIXLSQvurW0u7yZ88 ZlFJPrC8axOpnphLBENW4t+vU5a+sCXTLc8hjZjUi6u5RfYZen2WzlgxTKuVcHhiMIZs LtYPoujS00mb2hYmZWryVidNqkFmBObA9NrAdS3WWMSH1toWQwf2t+y0gQQdUlO1v5S8 gTKHY+Sxc27LgYTZc4MYEpYsMjvKYtx7hnAdwjHFMzp3b1TMYdvcYW9CxzeA+6ip7pMS PzOA== X-Gm-Message-State: AOAM5312EU+c+ojYORWa3BmmMqGdh+ch2L+PaBRa0XIzxV4nlWFLnNoN WVqpkIql8IuYpEM3Om/FEJ0= X-Google-Smtp-Source: ABdhPJyLH4nEoja8HUwFyKOZnVD/RepyeAu4Qs5vZn6KA2Hd/ojEH+NusTjc1pMXPjyDQDHqvrRpsw== X-Received: by 2002:a17:90a:5901:: with SMTP id k1mr2584388pji.76.1638838338166; Mon, 06 Dec 2021 16:52:18 -0800 (PST) Received: from edumazet1.svl.corp.google.com ([2620:15c:2c4:201:518c:39bf:c3e8:ffe2]) by smtp.gmail.com with ESMTPSA id l13sm14239618pfu.149.2021.12.06.16.52.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Dec 2021 16:52:17 -0800 (PST) From: Eric Dumazet To: "David S . Miller" , Jakub Kicinski Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net-next 17/17] audit: add netns refcount tracker to struct audit_netlink_list Date: Mon, 6 Dec 2021 16:51:42 -0800 Message-Id: <20211207005142.1688204-18-eric.dumazet@gmail.com> X-Mailer: git-send-email 2.34.1.400.ga245620fadb-goog In-Reply-To: <20211207005142.1688204-1-eric.dumazet@gmail.com> References: <20211207005142.1688204-1-eric.dumazet@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Eric Dumazet Signed-off-by: Eric Dumazet --- kernel/audit.c | 2 +- kernel/audit.h | 2 ++ kernel/auditfilter.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/audit.c b/kernel/audit.c index 493365899d205c12338323b5a6ca6a30609a3d6a..a5b360ecb379426bbfc743f13beeb6cddc96f068 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -901,7 +901,7 @@ int audit_send_list_thread(void *_dest) while ((skb = __skb_dequeue(&dest->q)) != NULL) netlink_unicast(sk, skb, dest->portid, 0); - put_net(dest->net); + put_net_track(dest->net, &dest->ns_tracker); kfree(dest); return 0; diff --git a/kernel/audit.h b/kernel/audit.h index c4498090a5bd66e5c620368381c89d4dda14d851..ffa8b18d84ad170f8c76a213dba610b0e4986319 100644 --- a/kernel/audit.h +++ b/kernel/audit.h @@ -15,6 +15,7 @@ #include #include #include // struct open_how +#include /* AUDIT_NAMES is the number of slots we reserve in the audit_context * for saving names from getname(). If we get more names we will allocate @@ -236,6 +237,7 @@ extern void audit_panic(const char *message); struct audit_netlink_list { __u32 portid; struct net *net; + netns_tracker ns_tracker; struct sk_buff_head q; }; diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index d75acb014ccdcba2a0bed0646323f5427757e493..2ea0c2ea9b7272a8abcd4c36a4d35f17e75e92e3 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c @@ -1182,7 +1182,8 @@ int audit_list_rules_send(struct sk_buff *request_skb, int seq) dest = kmalloc(sizeof(*dest), GFP_KERNEL); if (!dest) return -ENOMEM; - dest->net = get_net(sock_net(NETLINK_CB(request_skb).sk)); + dest->net = get_net_track(sock_net(NETLINK_CB(request_skb).sk), + &dest->ns_tracker, GFP_KERNEL); dest->portid = NETLINK_CB(request_skb).portid; skb_queue_head_init(&dest->q);