rcu: Prevent RCU callbacks from executing before scheduler initialized
authorPaul E. McKenney <paul.mckenney@linaro.org>
Thu, 12 Jan 2012 00:33:17 +0000 (16:33 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 21 Feb 2012 17:03:41 +0000 (09:03 -0800)
commit768dfffdffbfcc07d6927bdd642c714c0dd64c99
tree3f559e37c0ff2ae59af963024c0d3595fa3d4b8e
parentafef20540f7cd1ea91bc1ac20be238389eee4003
rcu: Prevent RCU callbacks from executing before scheduler initialized

This is a port of commit #b0d3041 from TREE_RCU to TREE_PREEMPT_RCU.

Under some rare but real combinations of configuration parameters, RCU
callbacks are posted during early boot that use kernel facilities that are
not yet initialized.  Therefore, when these callbacks are invoked, hard
hangs and crashes ensue.  This commit therefore prevents RCU callbacks
from being invoked until after the scheduler is fully up and running,
as in after multiple tasks have been spawned.

It might well turn out that a better approach is to identify the specific
RCU callbacks that are causing this problem, but that discussion will
wait until such time as someone really needs an RCU callback to be invoked
(as opposed to merely registered) during early boot.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/rcutiny.h
kernel/rcutiny_plugin.h