Skip to content

Commit

Permalink
nfsd: initialize nfsd versions before creating svc
Browse files Browse the repository at this point in the history
Commit 59db4a0 "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>
  • Loading branch information
J. Bruce Fields committed Aug 6, 2010
1 parent e2aa7f8 commit e844a7b
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion fs/nfsd/nfssvc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit e844a7b

Please sign in to comment.