summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-09-28 18:19:24 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-03 00:04:24 -0700
commitb8bddf51cfee2d3e6901f7c5646ad4e3ef1c5c80 (patch)
tree8984cf2f530a452f26fe43a508c101140b1592f1 /kernel
parentbd208931386764a067e10e686d4735d03830e9d6 (diff)
rcu: Simplify rcu_sched_qs() control flow
This commit applies an early-exit approach to rcu_sched_qs(), reducing the nesting level and saving a line of code. Change-Id: Ib5dff7a0e3a26ce8ed319fd03b15e77b7b6650db Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Git-commit: fecbf6f01fbd83e6419ccb7f61d9a6eb987f1d92 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Signed-off-by: Prateek Sood <prsood@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rcu/tree.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 2cb46d51d715..213596edabb6 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -250,22 +250,21 @@ void rcu_sched_qs(void)
{
unsigned long flags;
- if (__this_cpu_read(rcu_sched_data.cpu_no_qs.s)) {
- trace_rcu_grace_period(TPS("rcu_sched"),
- __this_cpu_read(rcu_sched_data.gpnum),
- TPS("cpuqs"));
- __this_cpu_write(rcu_sched_data.cpu_no_qs.b.norm, false);
- if (!__this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp))
- return;
- local_irq_save(flags);
- if (__this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp)) {
- __this_cpu_write(rcu_sched_data.cpu_no_qs.b.exp, false);
- rcu_report_exp_rdp(&rcu_sched_state,
- this_cpu_ptr(&rcu_sched_data),
- true);
- }
- local_irq_restore(flags);
+ if (!__this_cpu_read(rcu_sched_data.cpu_no_qs.s))
+ return;
+ trace_rcu_grace_period(TPS("rcu_sched"),
+ __this_cpu_read(rcu_sched_data.gpnum),
+ TPS("cpuqs"));
+ __this_cpu_write(rcu_sched_data.cpu_no_qs.b.norm, false);
+ if (!__this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp))
+ return;
+ local_irq_save(flags);
+ if (__this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp)) {
+ __this_cpu_write(rcu_sched_data.cpu_no_qs.b.exp, false);
+ rcu_report_exp_rdp(&rcu_sched_state,
+ this_cpu_ptr(&rcu_sched_data), true);
}
+ local_irq_restore(flags);
}
void rcu_bh_qs(void)