sched: Simplify get_nohz_timer_target()
authorPeter Zijlstra <peterz@infradead.org>
Tue, 1 Aug 2023 20:41:22 +0000 (22:41 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 14 Aug 2023 15:01:24 +0000 (17:01 +0200)
Use guards to reduce gotos and simplify control flow.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Reviewed-by: Valentin Schneider <vschneid@redhat.com>
Link: https://lore.kernel.org/r/20230801211811.828443100@infradead.org
kernel/sched/core.c

index a97eab3..6cda296 100644 (file)
@@ -1097,25 +1097,22 @@ int get_nohz_timer_target(void)
 
        hk_mask = housekeeping_cpumask(HK_TYPE_TIMER);
 
-       rcu_read_lock();
+       guard(rcu)();
+
        for_each_domain(cpu, sd) {
                for_each_cpu_and(i, sched_domain_span(sd), hk_mask) {
                        if (cpu == i)
                                continue;
 
-                       if (!idle_cpu(i)) {
-                               cpu = i;
-                               goto unlock;
-                       }
+                       if (!idle_cpu(i))
+                               return i;
                }
        }
 
        if (default_cpu == -1)
                default_cpu = housekeeping_any_cpu(HK_TYPE_TIMER);
-       cpu = default_cpu;
-unlock:
-       rcu_read_unlock();
-       return cpu;
+
+       return default_cpu;
 }
 
 /*