From: Haavard Skinnemoen Zero out zones_size with memset() and initialize just the zones we need. This should avoid breakage when zones come and go. Signed-off-by: Haavard Skinnemoen Signed-off-by: Andrew Morton --- arch/avr32/mm/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN arch/avr32/mm/init.c~avr32-dont-assume-anything-about-max_nr_zones arch/avr32/mm/init.c --- a/arch/avr32/mm/init.c~avr32-dont-assume-anything-about-max_nr_zones +++ a/arch/avr32/mm/init.c @@ -380,7 +380,7 @@ void __init paging_init(void) for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); - unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0 }; + unsigned long zones_size[MAX_NR_ZONES]; unsigned long low, start_pfn; start_pfn = pgdat->bdata->node_boot_start; @@ -388,8 +388,8 @@ void __init paging_init(void) low = pgdat->bdata->node_low_pfn; /* All memory is DMA-able */ + memset(zones_size, 0, sizeof(zones_size)); zones_size[ZONE_DMA] = low - start_pfn; - zones_size[ZONE_NORMAL] = 0; printk("Node %u: start_pfn = 0x%lx, low = 0x%lx\n", nid, start_pfn, low); _