From: Trond Myklebust Date: Tue, 2 Sep 2014 17:58:58 +0000 (-0400) Subject: nfs: do not start the callback thread until we set rqstp->rq_task X-Git-Tag: v3.18-rc1~90^2~26 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=66f09ca717e7905e0eebe000b86e27d0274b95ac;p=~emulex%2Finfiniband.git 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 Reviewed-by: Jeff Layton Signed-off-by: J. Bruce Fields --- diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index e3dd1cd175d..b8fb3a4ef64 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -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; }