From: Paul E. McKenney Date: Thu, 3 Dec 2020 01:52:07 +0000 (-0800) Subject: rcutorture: Make object_debug also double call_rcu() heap object X-Git-Tag: accepted/tizen/unified/20230118.172025~7851^2~1^2^8~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=edf7b8417834c89d00ef88355ea507b0b0a630ae;p=platform%2Fkernel%2Flinux-rpi.git rcutorture: Make object_debug also double call_rcu() heap object This commit provides a test for call_rcu() printing the allocation address of a double-freed callback by double-freeing a callback allocated via kmalloc(). However, this commit does not depend on any other commit. Signed-off-by: Paul E. McKenney --- diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 007595d..76c8386 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2782,6 +2782,7 @@ static void rcu_test_debug_objects(void) #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD struct rcu_head rh1; struct rcu_head rh2; + struct rcu_head *rhp = kmalloc(sizeof(*rhp), GFP_KERNEL); init_rcu_head_on_stack(&rh1); init_rcu_head_on_stack(&rh2); @@ -2794,6 +2795,10 @@ static void rcu_test_debug_objects(void) local_irq_disable(); /* Make it harder to start a new grace period. */ call_rcu(&rh2, rcu_torture_leak_cb); call_rcu(&rh2, rcu_torture_err_cb); /* Duplicate callback. */ + if (rhp) { + call_rcu(rhp, rcu_torture_leak_cb); + call_rcu(rhp, rcu_torture_err_cb); /* Another duplicate callback. */ + } local_irq_enable(); rcu_read_unlock(); preempt_enable();