]> 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)
commit148efdfb6aebac98ccd34ce4a4c0569daaef5fc7
tree6e7661bf5231b4c48a6681a9fa8e8ede7915d0a7
parent53fc05f12798b9e3cf27fb45e2f324bf34aa1e8d
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