diff options
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index ba06207b1dd3..a7c6bce1af83 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -1613,18 +1613,9 @@ EXPORT_SYMBOL_GPL(call_rcu_bh); | |||
1613 | */ | 1613 | */ |
1614 | void synchronize_sched(void) | 1614 | void synchronize_sched(void) |
1615 | { | 1615 | { |
1616 | struct rcu_synchronize rcu; | ||
1617 | |||
1618 | if (rcu_blocking_is_gp()) | 1616 | if (rcu_blocking_is_gp()) |
1619 | return; | 1617 | return; |
1620 | 1618 | wait_rcu_gp(call_rcu_sched); | |
1621 | init_rcu_head_on_stack(&rcu.head); | ||
1622 | init_completion(&rcu.completion); | ||
1623 | /* Will wake me after RCU finished. */ | ||
1624 | call_rcu_sched(&rcu.head, wakeme_after_rcu); | ||
1625 | /* Wait for it. */ | ||
1626 | wait_for_completion(&rcu.completion); | ||
1627 | destroy_rcu_head_on_stack(&rcu.head); | ||
1628 | } | 1619 | } |
1629 | EXPORT_SYMBOL_GPL(synchronize_sched); | 1620 | EXPORT_SYMBOL_GPL(synchronize_sched); |
1630 | 1621 | ||
@@ -1639,18 +1630,9 @@ EXPORT_SYMBOL_GPL(synchronize_sched); | |||
1639 | */ | 1630 | */ |
1640 | void synchronize_rcu_bh(void) | 1631 | void synchronize_rcu_bh(void) |
1641 | { | 1632 | { |
1642 | struct rcu_synchronize rcu; | ||
1643 | |||
1644 | if (rcu_blocking_is_gp()) | 1633 | if (rcu_blocking_is_gp()) |
1645 | return; | 1634 | return; |
1646 | 1635 | wait_rcu_gp(call_rcu_bh); | |
1647 | init_rcu_head_on_stack(&rcu.head); | ||
1648 | init_completion(&rcu.completion); | ||
1649 | /* Will wake me after RCU finished. */ | ||
1650 | call_rcu_bh(&rcu.head, wakeme_after_rcu); | ||
1651 | /* Wait for it. */ | ||
1652 | wait_for_completion(&rcu.completion); | ||
1653 | destroy_rcu_head_on_stack(&rcu.head); | ||
1654 | } | 1636 | } |
1655 | EXPORT_SYMBOL_GPL(synchronize_rcu_bh); | 1637 | EXPORT_SYMBOL_GPL(synchronize_rcu_bh); |
1656 | 1638 | ||