diff -urN oldtree/mm/page_alloc.c newtree/mm/page_alloc.c --- oldtree/mm/page_alloc.c 2006-08-18 15:01:22.000000000 -0400 +++ newtree/mm/page_alloc.c 2006-08-20 04:25:40.281394750 -0400 @@ -646,7 +646,7 @@ #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. */ @@ -660,6 +660,9 @@ 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 -urN oldtree/mm/vmstat.c newtree/mm/vmstat.c --- oldtree/mm/vmstat.c 2006-08-18 15:01:22.000000000 -0400 +++ newtree/mm/vmstat.c 2006-08-20 04:25:40.297395750 -0400 @@ -267,6 +267,9 @@ 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++)