Hello!
Compared tip/core/rcu to my latest patchset, and found the following
issues:
o	the memory barrier in rcu_exit_nohz() somehow got out of place
	(it is correct in mainline as of 2.6.26-rc7).
o	There is a duplicate declaration of rcu_dyntick_sched.
The attached patch fixes these.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
 struct softirq_action;
 
 #ifdef CONFIG_NO_HZ
-DECLARE_PER_CPU(struct rcu_dyntick_sched, rcu_dyntick_sched);
 
 static inline void rcu_enter_nohz(void)
 {
 {
        static DEFINE_RATELIMIT_STATE(rs, 10 * HZ, 1);
 
-       smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
        __get_cpu_var(rcu_dyntick_sched).dynticks++;
+       smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
        WARN_ON_RATELIMIT(!(__get_cpu_var(rcu_dyntick_sched).dynticks & 0x1),
                                &rs);
 }