It treats the idle_max_cpu little bit confusingly IMHO.  Let's make it
more straight forward.

Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 tools/perf/builtin-sched.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 5f69c9b9c78f..26efa99567b8 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -2005,7 +2005,7 @@ static int init_idle_threads(int ncpu)
        if (!idle_threads)
                return -ENOMEM;
 
-       idle_max_cpu = ncpu - 1;
+       idle_max_cpu = ncpu;
 
        /* allocate the actual thread struct if needed */
        for (i = 0; i < ncpu; ++i) {
@@ -2026,7 +2026,7 @@ static void free_idle_threads(void)
        if (idle_threads == NULL)
                return;
 
-       for (i = 0; i <= idle_max_cpu; ++i) {
+       for (i = 0; i < idle_max_cpu; ++i) {
                if ((idle_threads[i]))
                        thread__delete(idle_threads[i]);
        }
@@ -2049,8 +2049,7 @@ static struct thread *get_idle_thread(int cpu)
                        return NULL;
 
                idle_threads = (struct thread **) p;
-               i = idle_max_cpu ? idle_max_cpu + 1 : 0;
-               for (; i < j; ++i)
+               for (i = idle_max_cpu; i < j; ++i)
                        idle_threads[i] = NULL;
 
                idle_max_cpu = j;
@@ -2492,7 +2491,7 @@ static void timehist_print_summary(struct perf_sched 
*sched,
                return;
 
        printf("\nIdle stats:\n");
-       for (i = 0; i <= idle_max_cpu; ++i) {
+       for (i = 0; i < idle_max_cpu; ++i) {
                t = idle_threads[i];
                if (!t)
                        continue;
-- 
2.10.1

Reply via email to