On Fri, 30 May 2014, Frederic Weisbecker wrote: > On Thu, May 29, 2014 at 02:56:15PM -0500, Christoph Lameter wrote: > > -static void start_cpu_timer(int cpu) > > +static void __init start_shepherd_timer(void) > > { > > - struct delayed_work *work = &per_cpu(vmstat_work, cpu); > > + int cpu; > > + > > + for_each_possible_cpu(cpu) > > + INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu), > > + vmstat_update); > > + > > + cpu_stat_off = kmalloc(cpumask_size(), GFP_KERNEL); > > Now you're open coding alloc_cpumask_var() ? Subject: on demand vmstat: Do not open code alloc_cpumask_var Signed-off-by: Christoph Lameter <cl@xxxxxxxxx> Index: linux/mm/vmstat.c =================================================================== --- linux.orig/mm/vmstat.c 2014-05-29 14:43:26.439163942 -0500 +++ linux/mm/vmstat.c 2014-05-30 08:58:42.909697898 -0500 @@ -1238,7 +1238,7 @@ #ifdef CONFIG_SMP static DEFINE_PER_CPU(struct delayed_work, vmstat_work); int sysctl_stat_interval __read_mostly = HZ; -struct cpumask *cpu_stat_off; +cpumask_var_t cpu_stat_off; static void vmstat_update(struct work_struct *w) { @@ -1332,7 +1332,8 @@ INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu), vmstat_update); - cpu_stat_off = kmalloc(cpumask_size(), GFP_KERNEL); + if (!alloc_cpumask_var(&cpu_stat_off, GFP_KERNEL)) + BUG(); cpumask_copy(cpu_stat_off, cpu_online_mask); schedule_delayed_work(&shepherd, -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>