summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-06-25 12:54:17 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-07-06 05:55:16 -0700
commitcfca927972e31a5b3da49bf641c525732ff3c357 (patch)
treed77d787107b706189d4592ef2738901e98814217
parentcf01537ecf192d9ff15c32a355db5d5af22bea4d (diff)
downloadlinux-cfca927972e31a5b3da49bf641c525732ff3c357.tar.gz
linux-cfca927972e31a5b3da49bf641c525732ff3c357.tar.bz2
linux-cfca927972e31a5b3da49bf641c525732ff3c357.zip
rcu: Introduce check for callback list/count mismatch
The recent bug that introduced the RCU callback list/count mismatch showed the need for a diagnostic to check for this, which this commit adds. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r--kernel/rcutree.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 95c7b61e77e4..4154c9567a6d 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1612,6 +1612,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
rdp->n_force_qs_snap = rsp->n_force_qs;
} else if (rdp->qlen < rdp->qlen_last_fqs_check - qhimark)
rdp->qlen_last_fqs_check = rdp->qlen;
+ WARN_ON_ONCE((rdp->nxtlist == NULL) != (rdp->qlen == 0));
local_irq_restore(flags);