• Alexander Sverdlin's avatar
    nfsd: Fix nsfd startup race (again) · b10252c7
    Alexander Sverdlin authored
    Commit bd5ae928 ("nfsd: register pernet ops last, unregister first")
    has re-opened rpc_pipefs_event() race against nfsd_net_id registration
    (register_pernet_subsys()) which has been fixed by commit bb7ffbf2
    ("nfsd: fix nsfd startup race triggering BUG_ON").
    
    Restore the order of register_pernet_subsys() vs register_cld_notifier().
    Add WARN_ON() to prevent a future regression.
    
    Crash info:
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000012
    CPU: 8 PID: 345 Comm: mount Not tainted 5.4.144-... #1
    pc : rpc_pipefs_event+0x54/0x120 [nfsd]
    lr : rpc_pipefs_event+0x48/0x120 [nfsd]
    Call trace:
     rpc_pipefs_event+0x54/0x120 [nfsd]
     blocking_notifier_call_chain
     rpc_fill_super
     get_tree_keyed
     rpc_fs_get_tree
     vfs_get_tree
     do_mount
     ksys_mount
     __arm64_sys_mount
     el0_svc_handler
     el0_svc
    
    Fixes: bd5ae928 ("nfsd: register pernet ops last, unregister first")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarAlexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    b10252c7
nfs4recover.c 50.4 KB