rcu: Prevent RCU callbacks from executing before scheduler initialized
authorPaul E. McKenney <paul.mckenney@linaro.org>
Sun, 10 Jul 2011 22:57:35 +0000 (15:57 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 13 Jul 2011 15:17:56 +0000 (08:17 -0700)
commitb0d304172f49061b4ff78f9e2b02719ac69c8a7e
tree882123e565ced895910490514f6e676c708b5001
parent620917de59eeb934b9f8cf35cc2d95c1ac8ed0fc
rcu: Prevent RCU callbacks from executing before scheduler initialized

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.

Reported-by: julie Sullivan <kernelmail.jms@gmail.com>
Reported-by: RKK <kulkarni.ravi4@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tested-by: julie Sullivan <kernelmail.jms@gmail.com>
Tested-by: RKK <kulkarni.ravi4@gmail.com>
kernel/rcutree.c
kernel/rcutree_plugin.h