diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f66538b3c31b1de6a144446b087515a85ab2c7de..41737395bbcc16625ef11b071278ed6073c4055f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2964,6 +2964,7 @@ void __init free_area_init_nodes(unsigned long *max_zone_pfn) early_node_map[i].end_pfn); /* Initialise every node */ + setup_nr_node_ids(); for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); free_area_init_node(nid, pgdat, NULL, @@ -3189,7 +3190,6 @@ static int __init init_per_zone_pages_min(void) min_free_kbytes = 65536; setup_per_zone_pages_min(); setup_per_zone_lowmem_reserve(); - setup_nr_node_ids(); return 0; } module_init(init_per_zone_pages_min) diff --git a/mm/slab.c b/mm/slab.c index 70784b848b69b475718f0090033770b7c17b511b..8fdaffa717eaa1ef21bd3b900a02c06ab7f05f66 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1042,7 +1042,7 @@ static void *alternate_node_alloc(struct kmem_cache *, gfp_t); static struct array_cache **alloc_alien_cache(int node, int limit) { struct array_cache **ac_ptr; - int memsize = sizeof(void *) * MAX_NUMNODES; + int memsize = sizeof(void *) * nr_node_ids; int i; if (limit > 1)