|
@@ -3026,7 +3026,7 @@ bad:
|
|
if (dzone == zone)
|
|
if (dzone == zone)
|
|
break;
|
|
break;
|
|
kfree(zone_pcp(dzone, cpu));
|
|
kfree(zone_pcp(dzone, cpu));
|
|
- zone_pcp(dzone, cpu) = NULL;
|
|
|
|
|
|
+ zone_pcp(dzone, cpu) = &boot_pageset[cpu];
|
|
}
|
|
}
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
@@ -3041,7 +3041,7 @@ static inline void free_zone_pagesets(int cpu)
|
|
/* Free per_cpu_pageset if it is slab allocated */
|
|
/* Free per_cpu_pageset if it is slab allocated */
|
|
if (pset != &boot_pageset[cpu])
|
|
if (pset != &boot_pageset[cpu])
|
|
kfree(pset);
|
|
kfree(pset);
|
|
- zone_pcp(zone, cpu) = NULL;
|
|
|
|
|
|
+ zone_pcp(zone, cpu) = &boot_pageset[cpu];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4659,7 +4659,7 @@ int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write,
|
|
ret = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
|
|
ret = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
|
|
if (!write || (ret == -EINVAL))
|
|
if (!write || (ret == -EINVAL))
|
|
return ret;
|
|
return ret;
|
|
- for_each_zone(zone) {
|
|
|
|
|
|
+ for_each_populated_zone(zone) {
|
|
for_each_online_cpu(cpu) {
|
|
for_each_online_cpu(cpu) {
|
|
unsigned long high;
|
|
unsigned long high;
|
|
high = zone->present_pages / percpu_pagelist_fraction;
|
|
high = zone->present_pages / percpu_pagelist_fraction;
|