lkml.org 
[lkml]   [2021]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 08/52] nfsd: fix error handling of register_pernet_subsys() in init_nfsd()
    Date
    From: Patrick Ho <Patrick.Ho@netapp.com>

    commit 1d625050c7c2dd877e108e382b8aaf1ae3cfe1f4 upstream.

    init_nfsd() should not unregister pernet subsys if the register fails
    but should instead unwind from the last successful operation which is
    register_filesystem().

    Unregistering a failed register_pernet_subsys() call can result in
    a kernel GPF as revealed by programmatically injecting an error in
    register_pernet_subsys().

    Verified the fix handled failure gracefully with no lingering nfsd
    entry in /proc/filesystems. This change was introduced by the commit
    bd5ae9288d64 ("nfsd: register pernet ops last, unregister first"),
    the original error handling logic was correct.

    Fixes: bd5ae9288d64 ("nfsd: register pernet ops last, unregister first")
    Cc: stable@vger.kernel.org
    Signed-off-by: Patrick Ho <Patrick.Ho@netapp.com>
    Acked-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/nfsd/nfsctl.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/nfsd/nfsctl.c
    +++ b/fs/nfsd/nfsctl.c
    @@ -1549,7 +1549,7 @@ static int __init init_nfsd(void)
    goto out_free_all;
    return 0;
    out_free_all:
    - unregister_pernet_subsys(&nfsd_net_ops);
    + unregister_filesystem(&nfsd_fs_type);
    out_free_exports:
    remove_proc_entry("fs/nfs/exports", NULL);
    remove_proc_entry("fs/nfs", NULL);

    \
     
     \ /
      Last update: 2021-10-11 15:50    [W:5.410 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site