--- a/mm/page_alloc.c~mm-page_allocc-use-helper-function-zone_spans_pfn +++ a/mm/page_alloc.c @@ -1583,7 +1583,7 @@ static void __meminit init_reserved_page for (zid = 0; zid < MAX_NR_ZONES; zid++) { struct zone *zone = &pgdat->node_zones[zid]; - if (pfn >= zone->zone_start_pfn && pfn < zone_end_pfn(zone)) + if (zone_spans_pfn(zone, pfn)) break; } __init_single_page(pfn_to_page(pfn), pfn, zid, nid);