diff options
-rw-r--r-- | include/linux/rcupdate.h | 11 | ||||
-rw-r--r-- | kernel/rcu/tree.c | 5 |
2 files changed, 10 insertions, 6 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index ff476515f716..581abf848566 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -230,12 +230,11 @@ void __wait_rcu_gp(bool checktiny, int n, call_rcu_func_t *crcu_array, | |||
230 | struct rcu_synchronize *rs_array); | 230 | struct rcu_synchronize *rs_array); |
231 | 231 | ||
232 | #define _wait_rcu_gp(checktiny, ...) \ | 232 | #define _wait_rcu_gp(checktiny, ...) \ |
233 | do { \ | 233 | do { \ |
234 | call_rcu_func_t __crcu_array[] = { __VA_ARGS__ }; \ | 234 | call_rcu_func_t __crcu_array[] = { __VA_ARGS__ }; \ |
235 | const int __n = ARRAY_SIZE(__crcu_array); \ | 235 | struct rcu_synchronize __rs_array[ARRAY_SIZE(__crcu_array)]; \ |
236 | struct rcu_synchronize __rs_array[__n]; \ | 236 | __wait_rcu_gp(checktiny, ARRAY_SIZE(__crcu_array), \ |
237 | \ | 237 | __crcu_array, __rs_array); \ |
238 | __wait_rcu_gp(checktiny, __n, __crcu_array, __rs_array); \ | ||
239 | } while (0) | 238 | } while (0) |
240 | 239 | ||
241 | #define wait_rcu_gp(...) _wait_rcu_gp(false, __VA_ARGS__) | 240 | #define wait_rcu_gp(...) _wait_rcu_gp(false, __VA_ARGS__) |
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 9f75f25cc5d9..775d36cc0050 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
@@ -3868,6 +3868,7 @@ static void rcu_init_new_rnp(struct rcu_node *rnp_leaf) | |||
3868 | static void __init | 3868 | static void __init |
3869 | rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) | 3869 | rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) |
3870 | { | 3870 | { |
3871 | static struct lock_class_key rcu_exp_sched_rdp_class; | ||
3871 | unsigned long flags; | 3872 | unsigned long flags; |
3872 | struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); | 3873 | struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); |
3873 | struct rcu_node *rnp = rcu_get_root(rsp); | 3874 | struct rcu_node *rnp = rcu_get_root(rsp); |
@@ -3883,6 +3884,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) | |||
3883 | mutex_init(&rdp->exp_funnel_mutex); | 3884 | mutex_init(&rdp->exp_funnel_mutex); |
3884 | rcu_boot_init_nocb_percpu_data(rdp); | 3885 | rcu_boot_init_nocb_percpu_data(rdp); |
3885 | raw_spin_unlock_irqrestore(&rnp->lock, flags); | 3886 | raw_spin_unlock_irqrestore(&rnp->lock, flags); |
3887 | if (rsp == &rcu_sched_state) | ||
3888 | lockdep_set_class_and_name(&rdp->exp_funnel_mutex, | ||
3889 | &rcu_exp_sched_rdp_class, | ||
3890 | "rcu_data_exp_sched"); | ||
3886 | } | 3891 | } |
3887 | 3892 | ||
3888 | /* | 3893 | /* |