Skip to content
  • Giuseppe Cantavenera's avatar
    nfsd: fix nsfd startup race triggering BUG_ON · bb7ffbf2
    Giuseppe Cantavenera authored
    
    
    nfsd triggered a BUG_ON in net_generic(...) when rpc_pipefs_event(...)
    in fs/nfsd/nfs4recover.c was called before assigning ntfsd_net_id.
    The following was observed on a MIPS 32-core processor:
    kernel: Call Trace:
    kernel: [<ffffffffc00bc5e4>] rpc_pipefs_event+0x7c/0x158 [nfsd]
    kernel: [<ffffffff8017a2a0>] notifier_call_chain+0x70/0xb8
    kernel: [<ffffffff8017a4e4>] __blocking_notifier_call_chain+0x4c/0x70
    kernel: [<ffffffff8053aff8>] rpc_fill_super+0xf8/0x1a0
    kernel: [<ffffffff8022204c>] mount_ns+0xb4/0xf0
    kernel: [<ffffffff80222b48>] mount_fs+0x50/0x1f8
    kernel: [<ffffffff8023dc00>] vfs_kern_mount+0x58/0xf0
    kernel: [<ffffffff802404ac>] do_mount+0x27c/0xa28
    kernel: [<ffffffff80240cf0>] SyS_mount+0x98/0xe8
    kernel: [<ffffffff80135d24>] handle_sys64+0x44/0x68
    kernel:
    kernel:
            Code: 0040f809  00000000  2e020001 <00020336> 3c12c00d
                    3c02801a  de100000 6442eb98  0040f809
    kernel: ---[ end trace 7471374335809536 ]---
    
    Fixed this behaviour by calling register_pernet_subsys(&nfsd_net_ops) before
    registering rpc_pipefs_event(...) with the notifier chain.
    
    Signed-off-by: default avatarGiuseppe Cantavenera <giuseppe.cantavenera.ext@nokia.com>
    Signed-off-by: default avatarLorenzo Restelli <lorenzo.restelli.ext@nokia.com>
    Reviewed-by: default avatarKinlong Mee <kinglongmee@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    bb7ffbf2