|
@@ -1465,15 +1465,19 @@ static int __init build_zonelists_node(pg_data_t *pgdat,
|
|
struct zone *zone;
|
|
struct zone *zone;
|
|
|
|
|
|
BUG_ON(k > ZONE_HIGHMEM);
|
|
BUG_ON(k > ZONE_HIGHMEM);
|
|
- for (zone = pgdat->node_zones + k; zone >= pgdat->node_zones; zone--) {
|
|
|
|
|
|
+
|
|
|
|
+ do {
|
|
|
|
+ zone = pgdat->node_zones + k;
|
|
if (populated_zone(zone)) {
|
|
if (populated_zone(zone)) {
|
|
#ifndef CONFIG_HIGHMEM
|
|
#ifndef CONFIG_HIGHMEM
|
|
- BUG_ON(zone - pgdat->node_zones > ZONE_NORMAL);
|
|
|
|
|
|
+ BUG_ON(k > ZONE_NORMAL);
|
|
#endif
|
|
#endif
|
|
zonelist->zones[j++] = zone;
|
|
zonelist->zones[j++] = zone;
|
|
check_highest_zone(k);
|
|
check_highest_zone(k);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ k--;
|
|
|
|
+
|
|
|
|
+ } while (k >= 0);
|
|
return j;
|
|
return j;
|
|
}
|
|
}
|
|
|
|
|