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) |
