rcutorture: Add missing destroy_timer_on_stack()
authorThomas Gleixner <tglx@linutronix.de>
Sun, 23 Mar 2014 15:58:27 +0000 (08:58 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 14 May 2014 16:46:24 +0000 (09:46 -0700)
The rcu_torture_reader() function uses an on-stack timer_list structure
which it initializes with setup_timer_on_stack().  However, it fails to
use destroy_timer_on_stack() before exiting, which results in leaking a
tracking object if DEBUG_OBJECTS is enabled.  This commit therefore
invokes destroy_timer_on_stack() to avoid this leakage.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/rcutorture.c

index 8b2748486c17adc1484784342ab36a4340a7a47e..a7d18069a96d62aef24a8b4397cd40a6e6808046 100644 (file)
@@ -1023,8 +1023,10 @@ rcu_torture_reader(void *arg)
                cond_resched();
                stutter_wait("rcu_torture_reader");
        } while (!torture_must_stop());
-       if (irqreader && cur_ops->irq_capable)
+       if (irqreader && cur_ops->irq_capable) {
                del_timer_sync(&t);
+               destroy_timer_on_stack(&t);
+       }
        torture_kthread_stopping("rcu_torture_reader");
        return 0;
 }