[tip: core/rcu] rcutorture: Check for unwatched readers

From: tip-bot2 for Paul E. McKenney
Date: Fri Jul 31 2020 - 05:29:11 EST


The following commit has been merged into the core/rcu branch of tip:

Commit-ID: 775227511843202e65a7f194cbf64f38de01f004
Gitweb: https://git.kernel.org/tip/775227511843202e65a7f194cbf64f38de01f004
Author: Paul E. McKenney <paulmck@xxxxxxxxxx>
AuthorDate: Thu, 11 Jun 2020 16:43:14 -07:00
Committer: Paul E. McKenney <paulmck@xxxxxxxxxx>
CommitterDate: Mon, 29 Jun 2020 12:01:44 -07:00

rcutorture: Check for unwatched readers

RCU is supposed to be watching all non-idle kernel code and also all
softirq handlers. This commit adds some teeth to this statement by
adding a WARN_ON_ONCE().

Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
---
kernel/rcu/rcutorture.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 37455a1..9c31001 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1377,6 +1377,7 @@ static bool rcu_torture_one_read(struct torture_random_state *trsp)
struct rt_read_seg *rtrsp1;
unsigned long long ts;

+ WARN_ON_ONCE(!rcu_is_watching());
newstate = rcutorture_extend_mask(readstate, trsp);
rcutorture_one_extend(&readstate, newstate, trsp, rtrsp++);
started = cur_ops->get_gp_seq();