diff options
Diffstat (limited to 'mm/sparse.c')
-rw-r--r-- | mm/sparse.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index da432d9f0ae8..6ce4aab69e99 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
@@ -62,9 +62,12 @@ static struct mem_section noinline __init_refok *sparse_index_alloc(int nid) | |||
62 | unsigned long array_size = SECTIONS_PER_ROOT * | 62 | unsigned long array_size = SECTIONS_PER_ROOT * |
63 | sizeof(struct mem_section); | 63 | sizeof(struct mem_section); |
64 | 64 | ||
65 | if (slab_is_available()) | 65 | if (slab_is_available()) { |
66 | section = kmalloc_node(array_size, GFP_KERNEL, nid); | 66 | if (node_state(nid, N_HIGH_MEMORY)) |
67 | else | 67 | section = kmalloc_node(array_size, GFP_KERNEL, nid); |
68 | else | ||
69 | section = kmalloc(array_size, GFP_KERNEL); | ||
70 | } else | ||
68 | section = alloc_bootmem_node(NODE_DATA(nid), array_size); | 71 | section = alloc_bootmem_node(NODE_DATA(nid), array_size); |
69 | 72 | ||
70 | if (section) | 73 | if (section) |