diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmalloc.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 4581ddcdda50..b5ccf3158d82 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -1534,6 +1534,7 @@ static void *__vmalloc_node(unsigned long size, unsigned long align, | |||
1534 | static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, | 1534 | static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, |
1535 | pgprot_t prot, int node, void *caller) | 1535 | pgprot_t prot, int node, void *caller) |
1536 | { | 1536 | { |
1537 | const int order = 0; | ||
1537 | struct page **pages; | 1538 | struct page **pages; |
1538 | unsigned int nr_pages, array_size, i; | 1539 | unsigned int nr_pages, array_size, i; |
1539 | gfp_t nested_gfp = (gfp_mask & GFP_RECLAIM_MASK) | __GFP_ZERO; | 1540 | gfp_t nested_gfp = (gfp_mask & GFP_RECLAIM_MASK) | __GFP_ZERO; |
@@ -1560,11 +1561,12 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, | |||
1560 | 1561 | ||
1561 | for (i = 0; i < area->nr_pages; i++) { | 1562 | for (i = 0; i < area->nr_pages; i++) { |
1562 | struct page *page; | 1563 | struct page *page; |
1564 | gfp_t tmp_mask = gfp_mask | __GFP_NOWARN; | ||
1563 | 1565 | ||
1564 | if (node < 0) | 1566 | if (node < 0) |
1565 | page = alloc_page(gfp_mask); | 1567 | page = alloc_page(tmp_mask); |
1566 | else | 1568 | else |
1567 | page = alloc_pages_node(node, gfp_mask, 0); | 1569 | page = alloc_pages_node(node, tmp_mask, order); |
1568 | 1570 | ||
1569 | if (unlikely(!page)) { | 1571 | if (unlikely(!page)) { |
1570 | /* Successfully allocated i pages, free them in __vunmap() */ | 1572 | /* Successfully allocated i pages, free them in __vunmap() */ |
@@ -1579,6 +1581,9 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, | |||
1579 | return area->addr; | 1581 | return area->addr; |
1580 | 1582 | ||
1581 | fail: | 1583 | fail: |
1584 | warn_alloc_failed(gfp_mask, order, "vmalloc: allocation failure, " | ||
1585 | "allocated %ld of %ld bytes\n", | ||
1586 | (area->nr_pages*PAGE_SIZE), area->size); | ||
1582 | vfree(area->addr); | 1587 | vfree(area->addr); |
1583 | return NULL; | 1588 | return NULL; |
1584 | } | 1589 | } |