[PATCH 3/2] mm, vmstat: cancel pending work of the cpu_stat_off CPU

From: Mike Galbraith
Date: Tue Feb 02 2016 - 02:53:30 EST


Cancel pending work of the cpu_stat_off CPU.

Signed-off-by: Mike Galbraith <mgalbraith@xxxxxxx>
---
mm/vmstat.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1486,25 +1486,25 @@ static void vmstat_shepherd(struct work_

get_online_cpus();
/* Check processors whose vmstat worker threads have been disabled */
- for_each_cpu(cpu, cpu_stat_off)
+ for_each_cpu(cpu, cpu_stat_off) {
+ struct delayed_work *dw = &per_cpu(vmstat_work, cpu);
+
if (need_update(cpu)) {
if (cpumask_test_and_clear_cpu(cpu, cpu_stat_off))
- queue_delayed_work_on(cpu, vmstat_wq,
- &per_cpu(vmstat_work, cpu), 0);
+ queue_delayed_work_on(cpu, vmstat_wq, dw, 0);
} else {
/*
* Cancel the work if quiet_vmstat has put this
* cpu on cpu_stat_off because the work item might
* be still scheduled
*/
- cancel_delayed_work(this_cpu_ptr(&vmstat_work));
+ cancel_delayed_work(dw);
}
-
+ }
put_online_cpus();

schedule_delayed_work(&shepherd,
round_jiffies_relative(sysctl_stat_interval));
-
}

static void __init start_shepherd_timer(void)