diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c index 3bdf283..a3620ec 100644 --- a/kernel/time/timer_list.c +++ b/kernel/time/timer_list.c @@ -305,24 +305,26 @@ static void *timer_list_start(struct seq_file *file, loff_t *offset) if (!*offset) { iter->cpu = -1; iter->now = ktime_to_ns(ktime_get()); - } else if (iter->cpu >= nr_cpu_ids) { + } else { + iter->cpu = cpumask_next(iter->cpu, cpu_online_mask); + if (iter->cpu >= nr_cpu_ids) { #ifdef CONFIG_GENERIC_CLOCKEVENTS - if (!iter->second_pass) { - iter->cpu = -1; - iter->second_pass = true; - } else - return NULL; + if (!iter->second_pass) { + iter->cpu = -1; + iter->second_pass = true; + } else + return NULL; #else - return NULL; + return NULL; #endif + } } + return iter; } static void *timer_list_next(struct seq_file *file, void *v, loff_t *offset) { - struct timer_list_iter *iter = file->private; - iter->cpu = cpumask_next(iter->cpu, cpu_online_mask); ++*offset; return timer_list_start(file, offset); }