diff options
Diffstat (limited to 'kernel/rcupdate.c')
| -rw-r--r-- | kernel/rcupdate.c | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index ad63af8b2521..d92a76a881aa 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
| @@ -77,8 +77,15 @@ void wakeme_after_rcu(struct rcu_head *head) | |||
| 77 | * sections are delimited by rcu_read_lock() and rcu_read_unlock(), | 77 | * sections are delimited by rcu_read_lock() and rcu_read_unlock(), | 
| 78 | * and may be nested. | 78 | * and may be nested. | 
| 79 | */ | 79 | */ | 
| 80 | void synchronize_rcu(void); /* Makes kernel-doc tools happy */ | 80 | void synchronize_rcu(void) | 
| 81 | synchronize_rcu_xxx(synchronize_rcu, call_rcu) | 81 | { | 
| 82 | struct rcu_synchronize rcu; | ||
| 83 | init_completion(&rcu.completion); | ||
| 84 | /* Will wake me after RCU finished. */ | ||
| 85 | call_rcu(&rcu.head, wakeme_after_rcu); | ||
| 86 | /* Wait for it. */ | ||
| 87 | wait_for_completion(&rcu.completion); | ||
| 88 | } | ||
| 82 | EXPORT_SYMBOL_GPL(synchronize_rcu); | 89 | EXPORT_SYMBOL_GPL(synchronize_rcu); | 
| 83 | 90 | ||
| 84 | static void rcu_barrier_callback(struct rcu_head *notused) | 91 | static void rcu_barrier_callback(struct rcu_head *notused) | 
