From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr00127.outbound.protection.outlook.com ([40.107.0.127]:46819 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752453AbeBSIun (ORCPT ); Mon, 19 Feb 2018 03:50:43 -0500 Subject: [PATCH 14/16] net: Convert ip6_frags_ops From: Kirill Tkhai To: davem@davemloft.net, avagin@virtuozzo.com, pablo@netfilter.org, kadlec@blackhole.kfki.hu, fw@strlen.de, yoshfuji@linux-ipv6.org, afaerber@suse.de, steffen.klassert@secunet.com, herbert@gondor.apana.org.au, johannes@sipsolutions.net, netdev@vger.kernel.org, ktkhai@virtuozzo.com Date: Mon, 19 Feb 2018 11:50:37 +0300 Message-ID: <151903023774.32574.7314890497632439.stgit@localhost.localdomain> In-Reply-To: <151902976942.32574.10711323959096437995.stgit@localhost.localdomain> References: <151902976942.32574.10711323959096437995.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: Exit methods calls inet_frags_exit_net() with global ip6_frags as argument. So, after we make the pernet_operations async, a pair of exit methods may be called to iterate this hash table. Since there is inet_frag_worker(), which already may work in parallel with inet_frags_exit_net(), and it can make the same cleanup, that inet_frags_exit_net() does, it's safe. So we may mark these pernet_operations as async. Signed-off-by: Kirill Tkhai --- net/ipv6/reassembly.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index afbc000ad4f2..b5da69c83123 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c @@ -733,6 +733,7 @@ static void __net_exit ipv6_frags_exit_net(struct net *net) static struct pernet_operations ip6_frags_ops = { .init = ipv6_frags_init_net, .exit = ipv6_frags_exit_net, + .async = true, }; int __init ipv6_frag_init(void)