[PATCH v3] rcu: exp: Protect all sync_rcu_preempt_exp_done() with rcu_node lock

2018-03-08 Thread Boqun Feng
Currently some callsites of sync_rcu_preempt_exp_done() are not called with the corresponding rcu_node's ->lock held, which could introduces bugs as per Paul: o CPU 0 in sync_rcu_preempt_exp_done() reads ->exp_tasks and sees that it is NULL. o CPU 1 blocks within an RCU

[PATCH v3] rcu: exp: Protect all sync_rcu_preempt_exp_done() with rcu_node lock

2018-03-08 Thread Boqun Feng
Currently some callsites of sync_rcu_preempt_exp_done() are not called with the corresponding rcu_node's ->lock held, which could introduces bugs as per Paul: o CPU 0 in sync_rcu_preempt_exp_done() reads ->exp_tasks and sees that it is NULL. o CPU 1 blocks within an RCU