From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr30092.outbound.protection.outlook.com ([40.107.3.92]:61472 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933589AbeCELcU (ORCPT ); Mon, 5 Mar 2018 06:32:20 -0500 Subject: [PATCH net-next 11/12] net: Convert ctnetlink_net_ops From: Kirill Tkhai To: pablo@netfilter.org, kadlec@blackhole.kfki.hu, fw@strlen.de, stephen@networkplumber.org, davem@davemloft.net, dmitry.tarnyagin@lockless.no, socketcan@hartkopp.net, mkl@pengutronix.de, gerrit@erg.abdn.ac.uk, yoshfuji@linux-ipv6.org, johannes.berg@intel.com, garsilva@embeddedor.com, ross.lagerwall@citrix.com, aconole@bytheb.org, netdev@vger.kernel.org, ktkhai@virtuozzo.com Date: Mon, 05 Mar 2018 14:32:15 +0300 Message-ID: <152024953553.3454.6570690260452792825.stgit@localhost.localdomain> In-Reply-To: <152024910817.3454.18426950407771593279.stgit@localhost.localdomain> References: <152024910817.3454.18426950407771593279.stgit@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org List-ID: These pernet_operations register and unregister two conntrack notifiers, and they seem to be safe to be executed in parallel. General/not related to async pernet_operations JFI: ctnetlink_net_exit_batch() actions are grouped in batch, and this could look like there is synchronize_rcu() is forgotten. But there is synchronize_rcu() on module exit patch (in ctnetlink_exit()), so this batch may be reworked as simple .exit method. Signed-off-by: Kirill Tkhai --- net/netfilter/nf_conntrack_netlink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index dd177ebee9aa..8884d302d33a 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c @@ -3417,6 +3417,7 @@ static void __net_exit ctnetlink_net_exit_batch(struct list_head *net_exit_list) static struct pernet_operations ctnetlink_net_ops = { .init = ctnetlink_net_init, .exit_batch = ctnetlink_net_exit_batch, + .async = true, }; static int __init ctnetlink_init(void)