android_kernel_xiaomi_sm8450/fs/nfsd
Alexander Sverdlin c520943a00 nfsd: Fix nsfd startup race (again)
commit b10252c7ae9c9d7c90552f88b544a44ee773af64 upstream.

Commit bd5ae9288d64 ("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 bb7ffbf29e
("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: bd5ae9288d64 ("nfsd: register pernet ops last, unregister first")
Cc: stable@vger.kernel.org
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-12-14 11:32:39 +01:00
..
acl.h nfsd: eliminate an unnecessary acl size limit 2019-08-28 21:13:45 -04:00
auth.c nfsd: auth: Fix gid sorting when rootsquash enabled 2018-01-22 20:13:07 -08:00
auth.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
blocklayout.c block: add a bdev_is_partition helper 2020-09-25 08:18:57 -06:00
blocklayoutxdr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
blocklayoutxdr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cache.h nfsd4: make drc_slab global, not per-net 2020-06-01 17:44:45 -04:00
current_stateid.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
export.c NFSD: Map nfserr_wrongsec outside of nfsd_dispatch 2020-10-02 09:37:42 -04:00
export.h knfsd: Allow lockless lookups of the exports 2018-10-29 16:58:04 -04:00
fault_inject.c nfsd: no need to check return value of debugfs_create functions 2019-07-03 16:57:17 +02:00
filecache.c nfsd: Don't keep looking up unhashed files in the nfsd file cache 2021-03-25 09:04:08 +01:00
filecache.h nfsd: convert file cache to use over/underflow safe refcount 2020-02-06 11:22:55 -05:00
flexfilelayout.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
flexfilelayoutxdr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
flexfilelayoutxdr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idmap.h nfsd: Remove duplicate define of IDMAP_NAMESZ/IDMAP_TYPE_xx 2015-07-20 14:58:46 -04:00
Kconfig fs: nfsd: fix kconfig dependency warning for NFSD_V4 2021-04-07 15:00:03 +02:00
lockd.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile nfsd: remove fault injection code 2020-09-25 18:01:26 -04:00
netns.h nfsd: netns.h: delete a duplicated word 2020-07-24 17:25:13 -04:00
nfs2acl.c NFSD: Hoist status code encoding into XDR encoder functions 2020-10-12 10:29:44 -04:00
nfs3acl.c NFSD: Hoist status code encoding into XDR encoder functions 2020-10-12 10:29:44 -04:00
nfs3proc.c NFSD: MKNOD should return NFSERR_BADTYPE instead of NFSERR_INVAL 2020-11-05 17:20:12 -05:00
nfs3xdr.c nfsd4: readdirplus shouldn't return parent of export 2021-01-23 16:03:58 +01:00
nfs4acl.c nfsd: check permissions when setting ACLs 2016-06-24 12:11:52 -04:00
nfs4callback.c NFSD: fix error handling in NFSv4.0 callbacks 2021-04-07 15:00:05 +02:00
nfs4idmap.c nfsd: Use seq_putc() in two functions 2020-07-13 17:28:46 -04:00
nfs4layouts.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
nfs4proc.c NFSv4.2: fix copy stateid copying for the async copy 2021-05-14 09:50:13 +02:00
nfs4recover.c nfsd: Fix nsfd startup race (again) 2021-12-14 11:32:39 +01:00
nfs4state.c nfsd: fix use-after-free due to delegation race 2021-12-14 11:32:39 +01:00
nfs4xdr.c nfsd4: Handle the NFSv4 READDIR 'dircount' hint being zero 2021-10-13 10:04:24 +02:00
nfscache.c silence nfscache allocation warnings with kvzalloc 2020-09-25 18:01:28 -04:00
nfsctl.c nfsd: Fix nsfd startup race (again) 2021-12-14 11:32:39 +01:00
nfsd.h nfsd: add defines for NFSv4.2 extended attribute support 2020-07-13 17:27:03 -04:00
nfsfh.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
nfsfh.h nfsd: handle nfs3 timestamps as unsigned 2019-12-19 17:46:08 -05:00
nfsproc.c new helper: inode_wrong_type() 2021-09-08 08:49:01 +02:00
nfssvc.c nfsd: Fix message level for normal termination 2020-12-30 11:53:44 +01:00
nfsxdr.c NFSD: Hoist status code encoding into XDR encoder functions 2020-10-12 10:29:44 -04:00
pnfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
state.h nfsd: remove fault injection code 2020-09-25 18:01:26 -04:00
stats.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
stats.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace.c nfsd: move include of state.h from trace.c to trace.h 2015-10-23 15:57:29 -04:00
trace.h NFSD: Fix TP_printk() format specifier in nfsd_clid_class 2021-07-20 16:05:50 +02:00
vfs.c nfsd: Reduce contention for the nfsd_file nf_rwsem 2021-07-20 16:05:53 +02:00
vfs.h nfsd: define xattr functions to call into their vfs counterparts 2020-07-13 17:27:03 -04:00
xdr3.h NFSD: Encoder and decoder functions are always present 2020-10-02 09:37:41 -04:00
xdr4.h NFSD: Encoder and decoder functions are always present 2020-10-02 09:37:41 -04:00
xdr4cb.h NFSD CB_OFFLOAD xdr 2018-09-25 20:34:54 -04:00
xdr.h NFSD: Hoist status code encoding into XDR encoder functions 2020-10-12 10:29:44 -04:00