aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r--kernel/rcutree_plugin.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index f92115488187..c177ba0cce9a 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -679,7 +679,10 @@ void synchronize_rcu(void)
679 "Illegal synchronize_rcu() in RCU read-side critical section"); 679 "Illegal synchronize_rcu() in RCU read-side critical section");
680 if (!rcu_scheduler_active) 680 if (!rcu_scheduler_active)
681 return; 681 return;
682 wait_rcu_gp(call_rcu); 682 if (rcu_expedited)
683 synchronize_rcu_expedited();
684 else
685 wait_rcu_gp(call_rcu);
683} 686}
684EXPORT_SYMBOL_GPL(synchronize_rcu); 687EXPORT_SYMBOL_GPL(synchronize_rcu);
685 688
@@ -831,7 +834,7 @@ void synchronize_rcu_expedited(void)
831 udelay(trycount * num_online_cpus()); 834 udelay(trycount * num_online_cpus());
832 } else { 835 } else {
833 put_online_cpus(); 836 put_online_cpus();
834 synchronize_rcu(); 837 wait_rcu_gp(call_rcu);
835 return; 838 return;
836 } 839 }
837 } 840 }