]> git.baikalelectronics.ru Git - kernel.git/commit
rcu: Disallow callback registry on offline CPUs
authorPaul E. McKenney <paul.mckenney@linaro.org>
Fri, 3 Aug 2012 20:16:15 +0000 (13:16 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 23 Sep 2012 14:43:55 +0000 (07:43 -0700)
commited3d78e7b0b2a6261dd574f33d6d5b92a8274bfa
tree6e7661bf5231b4c48a6681a9fa8e8ede7915d0a7
parent5c9213d8b9aefd2c387c722f26c5ce3f347b2b1a
rcu: Disallow callback registry on offline CPUs

Posting a callback after the CPU_DEAD notifier effectively leaks
that callback unless/until that CPU comes back online.  Silence is
unhelpful when attempting to track down such leaks, so this commit emits
a WARN_ON_ONCE() and unconditionally leaks the callback when an offline
CPU attempts to register a callback.  The rdp->nxttail[RCU_NEXT_TAIL] is
set to NULL in the CPU_DEAD notifier and restored in the CPU_UP_PREPARE
notifier, allowing _call_rcu() to determine exactly when posting callbacks
is illegal.

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>
kernel/rcutree.c