Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp430807pxb; Wed, 3 Feb 2021 08:44:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJwv0w0J/VMDMcfC7DdDEYTk1t4CiPsucqhkmZrQUHtLUG1HgkKUS9CI10bhPm65Q7iZhQa6 X-Received: by 2002:a17:906:2495:: with SMTP id e21mr4086713ejb.280.1612370658067; Wed, 03 Feb 2021 08:44:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612370658; cv=none; d=google.com; s=arc-20160816; b=SUDV6lzLwQ/QCMwpUzRQWwowbqX2YVBcsvsE79UNJ2PoeBBe3ey9FUOiRVILX+D49o 0rEgFXGOgx242xA2xNw9dnwo/YIcVQwhHJ62CflbQTtuLx4XNTfcW40vZ3ZlUIj5ijbA h/S0hskdti+QluavN9p1+KK1VyL6WnZvN7/CP3urk2fODc9IeRijoYU0ePwn7vMnyfNL YiJu2JCX8fPxfijc91PFq0+UhW3H/RbHtAgiitKoqhYQpv/mRwJ/rOpRS121Ma6IzSUd QjSaQHEUPvkc6Cy1Spi70GisOqIU0mS+CfIo1kcdJaGi6tRMZFlEPTuZVPci4+e7jwET DEgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:from:user-agent:content-disposition:mime-version :message-id:subject:cc:to:date:dkim-signature:dkim-filter; bh=KiDwUCo85PHQpQpIPDyV92EJ0pcN+Jmf6NKwQnz+EXk=; b=VJ1Y+T6nhDWIbOrl797NHFM+QMmc4KfkGhcjzPG4C/cQDQ+fC/RJ/JXDgtBCIyYxMy moWxLFnn6ZijqpfmoGYnB91Uq31b2dvInJR01j+hAXgMb+DDdAvInXN5LNyhlClDgI6y mPJdqjM1kenmw20kvHGpVhVtK++ExkRCMHP0ZNtXj+ZepgoI0IiEmxEoHo0WB3i9fRSw bdRia74RId03Dv5lpb3TvaX4x0D/K1UuguldRmp2QPaSR0hoAtd9/CYBhF+XbgV18Nfz lYYCclB8VJSyo27pqphNUG8xj5gEuLg+ebbXL0LywE2qLbw0rOFZtrFr1pGu+GX+IbtI jVng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b="I922j/Mx"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn1si1608220edb.226.2021.02.03.08.43.44; Wed, 03 Feb 2021 08:44:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b="I922j/Mx"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229683AbhBCQm5 (ORCPT + 99 others); Wed, 3 Feb 2021 11:42:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229579AbhBCQmz (ORCPT ); Wed, 3 Feb 2021 11:42:55 -0500 Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCA42C0613D6 for ; Wed, 3 Feb 2021 08:42:15 -0800 (PST) Received: by fieldses.org (Postfix, from userid 2815) id DBF2B6EB8; Wed, 3 Feb 2021 11:42:13 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org DBF2B6EB8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fieldses.org; s=default; t=1612370533; bh=KiDwUCo85PHQpQpIPDyV92EJ0pcN+Jmf6NKwQnz+EXk=; h=Date:To:Cc:Subject:From:From; b=I922j/MxbWn/T2v+ZpZq5x0XIWXyE1BAD2avYa6zmQNwd5bUK4npQ/DmkN7Yogix1 7SmYmmkVQsLz7eenFT5UMeqbMhzvoPojmXXb5tdMz2V6STvoX9Cf2f9gz+pHsJmI6+ Udb1HNJDNMyvRB7oetDNpAA68/X9krEMPaQ8Qh4I= Date: Wed, 3 Feb 2021 11:42:13 -0500 To: Chuck Lever Cc: linux-nfs@vger.kernel.org Subject: [PATCH] nfsd: register pernet ops last, unregister first Message-ID: <20210203164213.GA26588@fieldses.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) From: bfields@fieldses.org (J. Bruce Fields) Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: "J. Bruce Fields" These pernet operations may depend on stuff set up or torn down in the module init/exit functions. And they may be called at any time in between. So it makes more sense for them to be the last to be registered in the init function, and the first to be unregistered in the exit function. In particular, without this, the drc slab is being destroyed before all the per-net drcs are shut down, resulting in an "Objects remaining in nfsd_drc on __kmem_cache_shutdown()" warning in exit_nfsd. Reported-by: Zhi Li Fixes: 3ba75830ce17 "nfsd4: drc containerization" Signed-off-by: J. Bruce Fields --- fs/nfsd/nfsctl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index f6d5d783f4a4..0759e589ab52 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -1522,12 +1522,9 @@ static int __init init_nfsd(void) int retval; printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); - retval = register_pernet_subsys(&nfsd_net_ops); - if (retval < 0) - return retval; retval = register_cld_notifier(); if (retval) - goto out_unregister_pernet; + return retval; retval = nfsd4_init_slabs(); if (retval) goto out_unregister_notifier; @@ -1544,9 +1541,14 @@ static int __init init_nfsd(void) goto out_free_lockd; retval = register_filesystem(&nfsd_fs_type); if (retval) + goto out_free_exports; + retval = register_pernet_subsys(&nfsd_net_ops); + if (retval < 0) goto out_free_all; return 0; out_free_all: + unregister_pernet_subsys(&nfsd_net_ops); +out_free_exports: remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL); out_free_lockd: @@ -1559,13 +1561,12 @@ static int __init init_nfsd(void) nfsd4_free_slabs(); out_unregister_notifier: unregister_cld_notifier(); -out_unregister_pernet: - unregister_pernet_subsys(&nfsd_net_ops); return retval; } static void __exit exit_nfsd(void) { + unregister_pernet_subsys(&nfsd_net_ops); nfsd_drc_slab_free(); remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL); @@ -1575,7 +1576,6 @@ static void __exit exit_nfsd(void) nfsd4_exit_pnfs(); unregister_filesystem(&nfsd_fs_type); unregister_cld_notifier(); - unregister_pernet_subsys(&nfsd_net_ops); } MODULE_AUTHOR("Olaf Kirch "); -- 2.29.2