diff options
Diffstat (limited to 'mm/sparse-vmemmap.c')
-rw-r--r-- | mm/sparse-vmemmap.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index a13ea6401ae7..d9714bdcb4a3 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c | |||
@@ -48,8 +48,14 @@ void * __meminit vmemmap_alloc_block(unsigned long size, int node) | |||
48 | { | 48 | { |
49 | /* If the main allocator is up use that, fallback to bootmem. */ | 49 | /* If the main allocator is up use that, fallback to bootmem. */ |
50 | if (slab_is_available()) { | 50 | if (slab_is_available()) { |
51 | struct page *page = alloc_pages_node(node, | 51 | struct page *page; |
52 | |||
53 | if (node_state(node, N_HIGH_MEMORY)) | ||
54 | page = alloc_pages_node(node, | ||
52 | GFP_KERNEL | __GFP_ZERO, get_order(size)); | 55 | GFP_KERNEL | __GFP_ZERO, get_order(size)); |
56 | else | ||
57 | page = alloc_pages(GFP_KERNEL | __GFP_ZERO, | ||
58 | get_order(size)); | ||
53 | if (page) | 59 | if (page) |
54 | return page_address(page); | 60 | return page_address(page); |
55 | return NULL; | 61 | return NULL; |