diff mbox

[tip/core/rcu] Introduce check for callback list/count mismatch

Message ID 20120705223319.GA27331@linux.vnet.ibm.com
State Accepted
Commit cfca927972e31a5b3da49bf641c525732ff3c357
Headers show

Commit Message

Paul E. McKenney July 5, 2012, 10:33 p.m. UTC
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 <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

Comments

Josh Triplett July 5, 2012, 10:55 p.m. UTC | #1
On Thu, Jul 05, 2012 at 03:33:19PM -0700, Paul E. McKenney wrote:
> 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 <paul.mckenney@linaro.org>
> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

Reviewed-by: Josh Triplett <josh@joshtriplett.org>

> diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> index 95c7b61..4154c95 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);
>  
>
diff mbox

Patch

diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 95c7b61..4154c95 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);