nfsd: initialize nfsd versions before creating svc
Commit 59db4a0c102e0de226a3395dbf25ea51bf845937 "nfsd: move more into nfsd_startup()" inadvertently moved nfsd_versions after nfsd_create_svc(). On older distributions using an rpc.nfsd that does not explicitly set the list of nfsd versions, this results in svc-create_pooled() being called with an empty versions array. The resulting incomplete initialization leads to a NULL dereference in svc_process_common() the first time a client accesses the server. Move nfsd_reset_versions() back before the svc_create_pooled(); this time, put it closer to the svc_create_pooled() call, to make this mistake more difficult in the future. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
e2aa7f8304
commit
e844a7b980
@ -224,7 +224,6 @@ static int nfsd_startup(unsigned short port, int nrservs)
|
||||
ret = nfs4_state_start();
|
||||
if (ret)
|
||||
goto out_lockd;
|
||||
nfsd_reset_versions();
|
||||
nfsd_up = true;
|
||||
return 0;
|
||||
out_lockd:
|
||||
@ -329,6 +328,7 @@ int nfsd_create_serv(void)
|
||||
nfsd_max_blksize >= 8*1024*2)
|
||||
nfsd_max_blksize /= 2;
|
||||
}
|
||||
nfsd_reset_versions();
|
||||
|
||||
nfsd_serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize,
|
||||
nfsd_last_thread, nfsd, THIS_MODULE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user