diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-30 13:01:35 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-30 13:01:35 -0400 |
| commit | 70c8a00a09076ca2683ef24356fad2e55f93a427 (patch) | |
| tree | a54329b865a15e29364be31c6567f37807c4c3bb /kernel | |
| parent | b9a532277938798b53178d5a66af6e2915cb27cf (diff) | |
| parent | 7c4f1c694bf84eac538bee3e411aed10ae617d46 (diff) | |
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RCU fixes from Ingo Molnar:
"Two RCU fixes:
- work around bug with recent GCC versions.
- fix false positive lockdep splat"
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
rcu: Suppress lockdep false positive for rcp->exp_funnel_mutex
rcu: Change _wait_rcu_gp() to work around GCC bug 67055
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/rcu/tree.c | 5 |
1 files changed, 5 insertions, 0 deletions
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 | /* |
