@@ -56,7 +56,6 @@ static DEFINE_MUTEX(nlmsvc_mutex);
5656static unsigned int nlmsvc_users ;
5757static struct svc_serv * nlmsvc_serv ;
5858static struct task_struct * nlmsvc_task ;
59- static struct svc_rqst * nlmsvc_rqst ;
6059unsigned long nlmsvc_timeout ;
6160
6261unsigned int lockd_net_id ;
@@ -182,6 +181,11 @@ lockd(void *vrqstp)
182181 nlm_shutdown_hosts ();
183182 cancel_delayed_work_sync (& ln -> grace_period_end );
184183 locks_end_grace (& ln -> lockd_manager );
184+
185+ dprintk ("lockd_down: service stopped\n" );
186+
187+ svc_exit_thread (rqstp );
188+
185189 return 0 ;
186190}
187191
@@ -358,13 +362,14 @@ static void lockd_unregister_notifiers(void)
358362static int lockd_start_svc (struct svc_serv * serv )
359363{
360364 int error ;
365+ struct svc_rqst * rqst ;
361366
362367 /*
363368 * Create the kernel thread and wait for it to start.
364369 */
365- nlmsvc_rqst = svc_prepare_thread (serv , & serv -> sv_pools [0 ], NUMA_NO_NODE );
366- if (IS_ERR (nlmsvc_rqst )) {
367- error = PTR_ERR (nlmsvc_rqst );
370+ rqst = svc_prepare_thread (serv , & serv -> sv_pools [0 ], NUMA_NO_NODE );
371+ if (IS_ERR (rqst )) {
372+ error = PTR_ERR (rqst );
368373 printk (KERN_WARNING
369374 "lockd_up: svc_rqst allocation failed, error=%d\n" ,
370375 error );
@@ -374,24 +379,23 @@ static int lockd_start_svc(struct svc_serv *serv)
374379 svc_sock_update_bufs (serv );
375380 serv -> sv_maxconn = nlm_max_connections ;
376381
377- nlmsvc_task = kthread_create (lockd , nlmsvc_rqst , "%s" , serv -> sv_name );
382+ nlmsvc_task = kthread_create (lockd , rqst , "%s" , serv -> sv_name );
378383 if (IS_ERR (nlmsvc_task )) {
379384 error = PTR_ERR (nlmsvc_task );
380385 printk (KERN_WARNING
381386 "lockd_up: kthread_run failed, error=%d\n" , error );
382387 goto out_task ;
383388 }
384- nlmsvc_rqst -> rq_task = nlmsvc_task ;
389+ rqst -> rq_task = nlmsvc_task ;
385390 wake_up_process (nlmsvc_task );
386391
387392 dprintk ("lockd_up: service started\n" );
388393 return 0 ;
389394
390395out_task :
391- svc_exit_thread (nlmsvc_rqst );
396+ svc_exit_thread (rqst );
392397 nlmsvc_task = NULL ;
393398out_rqst :
394- nlmsvc_rqst = NULL ;
395399 return error ;
396400}
397401
@@ -500,9 +504,6 @@ lockd_down(struct net *net)
500504 }
501505 lockd_unregister_notifiers ();
502506 kthread_stop (nlmsvc_task );
503- dprintk ("lockd_down: service stopped\n" );
504- svc_exit_thread (nlmsvc_rqst );
505- nlmsvc_rqst = NULL ;
506507 dprintk ("lockd_down: service destroyed\n" );
507508 nlmsvc_serv = NULL ;
508509 nlmsvc_task = NULL ;
0 commit comments