nfs: do not start the callback thread until we set rqstp->rq_task
This fixes an Oopsable race when starting up the callback server. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Reviewed-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
d4e8990299
commit
66f09ca717
|
@ -235,7 +235,7 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt,
|
|||
|
||||
cb_info->serv = serv;
|
||||
cb_info->rqst = rqstp;
|
||||
cb_info->task = kthread_run(callback_svc, cb_info->rqst,
|
||||
cb_info->task = kthread_create(callback_svc, cb_info->rqst,
|
||||
"nfsv4.%u-svc", minorversion);
|
||||
if (IS_ERR(cb_info->task)) {
|
||||
ret = PTR_ERR(cb_info->task);
|
||||
|
@ -245,6 +245,7 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt,
|
|||
return ret;
|
||||
}
|
||||
rqstp->rq_task = cb_info->task;
|
||||
wake_up_process(cb_info->task);
|
||||
dprintk("nfs_callback_up: service started\n");
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue