rcu: Check for illegal use of RCU from offlined CPUs
authorPaul E. McKenney <paul.mckenney@linaro.org>
Mon, 23 Jan 2012 20:41:26 +0000 (12:41 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 21 Feb 2012 17:06:03 +0000 (09:06 -0800)
commitc0d6d01bffdce19fa19baad6cb8cc3eed7bfd6f5
treeea4c20ddc87b94d7bef2402fe6dbe3186be263c2
parent24cd7fd0eaa0d9f5e197ff77a83b006a86696068
rcu: Check for illegal use of RCU from offlined CPUs

Although it is legal to use RCU during early boot, it is anything
but legal to use RCU at runtime from an offlined CPU.  After all, RCU
explicitly ignores offlined CPUs.  This commit therefore adds checks
for runtime use of RCU from offlined CPUs.

These checks are not perfect, in particular, they can be subverted
through use of things like rcu_dereference_raw().  Note that it is not
possible to put checks in rcu_read_lock() and friends due to the fact
that these primitives are used in code that might be used under either
RCU or lock-based protection, which means that checking rcu_read_lock()
gets you fat piles of false positives.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/rcupdate.h
include/linux/srcu.h
kernel/rcupdate.c
kernel/rcutree.c
kernel/rcutree_plugin.h