Commit e0011bca authored by NeilBrown's avatar NeilBrown Committed by Chuck Lever
Browse files

nfsd: initialise nfsd_info.mutex early.



nfsd_info.mutex can be dereferenced by svc_pool_stats_start()
immediately after the new netns is created.  Currently this can
trigger an oops.

Move the initialisation earlier before it can possibly be dereferenced.

Fixes: 7b207ccd ("svc: don't hold reference for poolstats, only mutex.")
Reported-by: default avatarSourabh Jain <sourabhjain@linux.ibm.com>
Closes: https://lore.kernel.org/all/c2e9f6de-1ec4-4d3a-b18d-d5a6ec0814a0@linux.ibm.com/


Signed-off-by: default avatarNeilBrown <neilb@suse.de>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent da2c8fef
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2169,6 +2169,8 @@ static __net_init int nfsd_net_init(struct net *net)
	nn->nfsd_svcstats.program = &nfsd_program;
	nn->nfsd_versions = NULL;
	nn->nfsd4_minorversions = NULL;
	nn->nfsd_info.mutex = &nfsd_mutex;
	nn->nfsd_serv = NULL;
	nfsd4_init_leases_net(nn);
	get_random_bytes(&nn->siphash_key, sizeof(nn->siphash_key));
	seqlock_init(&nn->writeverf_lock);
+0 −1
Original line number Diff line number Diff line
@@ -672,7 +672,6 @@ int nfsd_create_serv(struct net *net)
		return error;
	}
	spin_lock(&nfsd_notifier_lock);
	nn->nfsd_info.mutex = &nfsd_mutex;
	nn->nfsd_serv = serv;
	spin_unlock(&nfsd_notifier_lock);