[PATCH tip/core/rcu 0/18] v5 add lockdep-based diagnostics torcu_dereference()

From: Paul E. McKenney
Date: Wed Feb 17 2010 - 15:29:37 EST


Hello!

This patch series adds lockdep-based checking to the rcu_dereference()
primitive in order to flag misuses of RCU. The first four patches put
the RCU infrastructure in place, the next eight use this infrastructure
in the net, sched, vfs, radix-tree, idr, and security subsystems, and the
last patch documents how to use the new lockdep-checked rcu_dereference()
primitives. The remaining five patches are other changes that also need
to be applied.

The new (and default-disabled) CONFIG_PROVE_RCU makes this safe to include
in tip/core/rcu -- unlike v2, your system won't complain about RCU misuse
unless you ask it to. There are still several situations that trigger
on systems I have access to (and I have email out on a couple of them),
some of the remaining will be triggered only by hardware I don't have
access to and kernel features I am unfamiliar with. So this is ready
for some more-general testing.

Changes since v4 (http://lkml.org/lkml/2010/2/11/356)

o Apply review comments from Peter Ziljstra.

o Another documentation update.

o Fixes that avoid overflowing signed integers.

o Rebased Thomas Gleixner's raw-spinlock patch on this series.
(Thomas's original at http://lkml.org/lkml/2010/2/17/182.)

Changes since v3 (http://lkml.org/lkml/2010/1/14/505)

o Fix a few more issues identified by the checking.

o Add a documentation update.

o Accelerate RCU grace periods when the current CPU is the last
non-dyntick-idle CPU in the system, which is important for
some multi-core battery-powered devices.

Changes since v2 (http://lkml.org/lkml/2010/1/4/496):

o Removed references to the check condition for the non-lockdep
version of rcu_dereference_check(), thus preventing numerous
build errors.

o Create a CONFIG_PROVE_RCU (default disabled) so that developers
who want to use lockdep only to debug locks aren't bothered
by RCU-specific lockdep complaints that will no doubt persist
for a little bit while some of the more obscure uses of RCU
are reverse-engineered.

o Fix a few more issues identified by the checking.

o Add documentation in Documentation/RCU/lockdep.txt.

Changes since v1 (http://lkml.org/lkml/2009/12/15/553):

o Made SRCU have per-srcu_struct lockdep maps to prevent lockdep
from conflating independent uses of SRCU, and updated the
rcu_dereference() checking in rcutorture to match.

o Fix a few issues identified by the checking.

o Disable checking within RCU list macros, RCU radix trees, and
IDR.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/