diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6e8ecb6e021c..9dd443d89d8b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -318,6 +318,7 @@ static void bad_page(struct page *page) | |||
318 | current->comm, page_to_pfn(page)); | 318 | current->comm, page_to_pfn(page)); |
319 | dump_page(page); | 319 | dump_page(page); |
320 | 320 | ||
321 | print_modules(); | ||
321 | dump_stack(); | 322 | dump_stack(); |
322 | out: | 323 | out: |
323 | /* Leave bad fields for debug, except PageBuddy could make trouble */ | 324 | /* Leave bad fields for debug, except PageBuddy could make trouble */ |
@@ -1753,7 +1754,6 @@ static DEFINE_RATELIMIT_STATE(nopage_rs, | |||
1753 | 1754 | ||
1754 | void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...) | 1755 | void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...) |
1755 | { | 1756 | { |
1756 | va_list args; | ||
1757 | unsigned int filter = SHOW_MEM_FILTER_NODES; | 1757 | unsigned int filter = SHOW_MEM_FILTER_NODES; |
1758 | 1758 | ||
1759 | if ((gfp_mask & __GFP_NOWARN) || !__ratelimit(&nopage_rs)) | 1759 | if ((gfp_mask & __GFP_NOWARN) || !__ratelimit(&nopage_rs)) |
@@ -1772,14 +1772,21 @@ void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...) | |||
1772 | filter &= ~SHOW_MEM_FILTER_NODES; | 1772 | filter &= ~SHOW_MEM_FILTER_NODES; |
1773 | 1773 | ||
1774 | if (fmt) { | 1774 | if (fmt) { |
1775 | printk(KERN_WARNING); | 1775 | struct va_format vaf; |
1776 | va_list args; | ||
1777 | |||
1776 | va_start(args, fmt); | 1778 | va_start(args, fmt); |
1777 | vprintk(fmt, args); | 1779 | |
1780 | vaf.fmt = fmt; | ||
1781 | vaf.va = &args; | ||
1782 | |||
1783 | pr_warn("%pV", &vaf); | ||
1784 | |||
1778 | va_end(args); | 1785 | va_end(args); |
1779 | } | 1786 | } |
1780 | 1787 | ||
1781 | pr_warning("%s: page allocation failure: order:%d, mode:0x%x\n", | 1788 | pr_warn("%s: page allocation failure: order:%d, mode:0x%x\n", |
1782 | current->comm, order, gfp_mask); | 1789 | current->comm, order, gfp_mask); |
1783 | 1790 | ||
1784 | dump_stack(); | 1791 | dump_stack(); |
1785 | if (!should_suppress_show_mem()) | 1792 | if (!should_suppress_show_mem()) |