[PATCH 3/3] sched/nohz: Remove weird error handling from find_new_ilb()

From: Ingo Molnar
Date: Fri Oct 06 2023 - 06:25:45 EST


find_new_ilb() returns nr_cpu_ids on failure - which is a weird
choice in itself: not only is it a global variable, it is
a +1 out of bounds CPU index...

Its only user, kick_ilb(), then checks the return against nr_cpu_ids
to decide to return.

Instead of this, use a standard -1 return on failure to find an
idle CPU, as the argument is signed already.

Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
---
kernel/sched/fair.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index d4e90d15bd77..dad60576cf56 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -11572,7 +11572,7 @@ static inline int find_new_ilb(void)
return ilb_cpu;
}

- return nr_cpu_ids;
+ return -1;
}

/*
@@ -11593,8 +11593,7 @@ static void kick_ilb(unsigned int flags)
nohz.next_balance = jiffies+1;

ilb_cpu = find_new_ilb();
-
- if (ilb_cpu >= nr_cpu_ids)
+ if (ilb_cpu < 0)
return;

/*
--
2.39.2