Introduce check for callback list/count mismatch
PATCH 1/1 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 patch adds.
Signed-off-by Paul E. McKenney <[email protected]>
Signed-off-by Paul E. McKenney <[email protected]>
kernel/rcutree.c +1 -0
@@ -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);
Quoted 6 lines · Paul E. McKenney
The recent bug that introduced the RCU callback list/count mismatch showed the need for a diagnostic to check for this, which this patch adds.
Signed-off-by Paul E. McKenney <[email protected]>Signed-off-by Paul E. McKenney <[email protected]>
Reviewed-by Josh Triplett <[email protected]>
Quoted 13 lines
kernel/rcutree.c +1
-0@@ -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);