46 lines
1.1 KiB
Diff
46 lines
1.1 KiB
Diff
Patch by: Nathan Zimmer <nzimmer@sgi.com>
|
|
|
|
Fixes a regression in the commit
|
|
"timer_list: Convert timer list to be a proper seq_file" which causes
|
|
/proc/timer_list to return an infinite amount of data
|
|
|
|
|
|
--- a/kernel/time/timer_list.c
|
|
+++ b/kernel/time/timer_list.c
|
|
@@ -305,24 +305,26 @@ static void *timer_list_start(struct seq
|
|
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);
|
|
}
|