mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
rcu: Add comment giving debug strategy for double call_rcu()
The following statement has for some reason proven non-intuitive: WARN_ON_ONCE(rcu_segcblist_empty(&rdp->cblist) != (count == 0)); This commit therefore adds a comment that states that this warning usually triggers in response to a double call_rcu(), which is sort of like a double free. The comment also suggests building with CONFIG_DEBUG_OBJECTS_RCU_HEAD=y to track down the double call_rcu(). Reported-by: David Howells <dhowells@redhat.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
9122caf99b
commit
efd88b02bb
1 changed files with 5 additions and 0 deletions
|
@ -2789,6 +2789,11 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
|
||||||
rdp->n_force_qs_snap = rsp->n_force_qs;
|
rdp->n_force_qs_snap = rsp->n_force_qs;
|
||||||
} else if (count < rdp->qlen_last_fqs_check - qhimark)
|
} else if (count < rdp->qlen_last_fqs_check - qhimark)
|
||||||
rdp->qlen_last_fqs_check = count;
|
rdp->qlen_last_fqs_check = count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following usually indicates a double call_rcu(). To track
|
||||||
|
* this down, try building with CONFIG_DEBUG_OBJECTS_RCU_HEAD=y.
|
||||||
|
*/
|
||||||
WARN_ON_ONCE(rcu_segcblist_empty(&rdp->cblist) != (count == 0));
|
WARN_ON_ONCE(rcu_segcblist_empty(&rdp->cblist) != (count == 0));
|
||||||
|
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
Loading…
Reference in a new issue