aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/locking
diff options
context:
space:
mode:
authorDavidlohr Bueso <dave@stgolabs.net>2014-09-11 23:40:21 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2014-09-16 16:41:06 -0400
commitd36a7a0d5e8b5bff1671723d733eb61621b0cee4 (patch)
tree17cbd1c2542a4b587890a593446757606a4a7834 /kernel/locking
parent1e6757a92189278c484799ea98fc69bdc528940e (diff)
torture: Address race in module cleanup
When performing module cleanups by calling torture_cleanup() the 'torture_type' string in nullified However, callers are not necessarily done, and might still need to reference the variable. This impacts both rcutorture and locktorture, causing printing things like: [ 94.226618] (null)-torture: Stopping lock_torture_writer task [ 94.226624] (null)-torture: Stopping lock_torture_stats task Thus delay this operation until the very end of the cleanup process. The consequence (which shouldn't matter for this kid of program) is, of course, that we delay the window between rmmod and modprobing, for instance in module_torture_begin(). Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/locking')
-rw-r--r--kernel/locking/locktorture.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c
index de703a769c1d..988267cc92c1 100644
--- a/kernel/locking/locktorture.c
+++ b/kernel/locking/locktorture.c
@@ -361,7 +361,7 @@ static void lock_torture_cleanup(void)
361{ 361{
362 int i; 362 int i;
363 363
364 if (torture_cleanup()) 364 if (torture_cleanup_begin())
365 return; 365 return;
366 366
367 if (writer_tasks) { 367 if (writer_tasks) {
@@ -384,6 +384,7 @@ static void lock_torture_cleanup(void)
384 else 384 else
385 lock_torture_print_module_parms(cur_ops, 385 lock_torture_print_module_parms(cur_ops,
386 "End of test: SUCCESS"); 386 "End of test: SUCCESS");
387 torture_cleanup_end();
387} 388}
388 389
389static int __init lock_torture_init(void) 390static int __init lock_torture_init(void)