diff --git a/mm/page_alloc.c b/mm/page_alloc.c index cc64830475676088ee056bc94c0f07fd54c14b01..f7ea020c23ea886c63111c2bdd9ce40ee866da97 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -633,7 +633,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, #ifdef CONFIG_NUMA /* * Called from the slab reaper to drain pagesets on a particular node that - * belong to the currently executing processor. + * belongs to the currently executing processor. * Note that this function must be called with the thread pinned to * a single processor. */ @@ -647,6 +647,9 @@ void drain_node_pages(int nodeid) struct zone *zone = NODE_DATA(nodeid)->node_zones + z; struct per_cpu_pageset *pset; + if (!populated_zone(zone)) + continue; + pset = zone_pcp(zone, smp_processor_id()); for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) { struct per_cpu_pages *pcp; diff --git a/mm/vmstat.c b/mm/vmstat.c index 04a9093f649eb8ea7198bb082c4f5def3b8bd7b9..968c0072e19a17ef729fccc612427f44878b926f 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -321,6 +321,9 @@ void refresh_cpu_vm_stats(int cpu) for_each_zone(zone) { struct per_cpu_pageset *pcp; + if (!populated_zone(zone)) + continue; + pcp = zone_pcp(zone, cpu); for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)