kernel: merge a proposed fix from LKML for fixing infinite data returned by /proc/timer_list
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 37484
This commit is contained in:
parent
a0129dfd8e
commit
bb141e06a2
1 changed files with 45 additions and 0 deletions
45
target/linux/generic/patches-3.10/030-timer_list_fix.patch
Normal file
45
target/linux/generic/patches-3.10/030-timer_list_fix.patch
Normal file
|
@ -0,0 +1,45 @@
|
|||
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);
|
||||
}
|
Loading…
Reference in a new issue