summaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2017-07-12 06:52:31 +0200
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2017-08-17 16:26:23 +0200
commit2dee9404fa8c4384453a5f3a15ad74ab9480f2d6 (patch)
treeef942d70822fab59415526d87b08fc68ef90660c /kernel/rcu/tree.c
parentrcu/tracing: Set disable_rcu_irq_enter on rcu_eqs_exit() (diff)
downloadlinux-2dee9404fa8c4384453a5f3a15ad74ab9480f2d6.tar.xz
linux-2dee9404fa8c4384453a5f3a15ad74ab9480f2d6.zip
rcu: Add assertions verifying blocked-tasks list
This commit adds assertions verifying the consistency of the rcu_node structure's ->blkd_tasks list and its ->gp_tasks, ->exp_tasks, and ->boost_tasks pointers. In particular, the ->blkd_tasks lists must be empty except for leaf rcu_node structures. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 2b37f1a8e235..ac2617d857a3 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2410,6 +2410,8 @@ rcu_report_qs_rnp(unsigned long mask, struct rcu_state *rsp,
return;
}
WARN_ON_ONCE(oldmask); /* Any child must be all zeroed! */
+ WARN_ON_ONCE(rnp->level != rcu_num_lvls - 1 &&
+ rcu_preempt_blocked_readers_cgp(rnp));
rnp->qsmask &= ~mask;
trace_rcu_quiescent_state_report(rsp->name, rnp->gpnum,
mask, rnp->qsmask, rnp->level,