On Fri, May 26, 2023 at 12:27:51PM -0400, Mathieu Desnoyers wrote: > On 5/26/23 12:25, Greg KH wrote: > > On Fri, May 26, 2023 at 05:05:51PM +0200, Peter Zijlstra wrote: > > > Convert kernel/sched/core.c to use the fancy new guards to simplify > > > the error paths. > > > > That's slightly crazy... > > > > I like the idea, but is this really correct: > > > > > > > > > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > > > --- > > > kernel/sched/core.c | 1223 +++++++++++++++++++++++---------------------------- > > > kernel/sched/sched.h | 39 + > > > 2 files changed, 595 insertions(+), 667 deletions(-) > > > > > > --- a/kernel/sched/core.c > > > +++ b/kernel/sched/core.c > > > @@ -1097,24 +1097,21 @@ int get_nohz_timer_target(void) > > > hk_mask = housekeeping_cpumask(HK_TYPE_TIMER); > > > - rcu_read_lock(); > > > - for_each_domain(cpu, sd) { > > > - for_each_cpu_and(i, sched_domain_span(sd), hk_mask) { > > > - if (cpu == i) > > > - continue; > > > + void_scope(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; > > > > You can call return from within a "scope" and it will clean up properly? > > > > I tried to read the cpp "mess" but couldn't figure out how to validate > > this at all, have a set of tests for this somewhere? > > > > Anyway, the naming is whack, but I don't have a proposed better name, > > except you might want to put "scope_" as the prefix not the suffix, but > > then that might look odd to, so who knows. > > FWIW C++ has std::scoped_lock. So perhaps using a similar wording may help ? Yeah, I like "scoped_*" and "guarded_*" for naming. IMO, it reads better. -- Kees Cook