From: Yinghai Lu <[email protected]>
Subject: bootmem: make ___alloc_bootmem_node_nopanic() really nopanic

after
| From 99ab7b19440a72ebdf225f99b20f8ef40decee86 Mon Sep 17 00:00:00 2001
| Date: Wed, 11 Jul 2012 14:02:53 -0700
| Subject: [PATCH] mm: sparse: fix usemap allocation above node descriptor
 section

Johannes said:
| while backporting the below patch, I realised that your fix busted
| f5bf18fa22f8 again.  The problem was not a panicking version on
| allocation failure but when the usemap size was too large such that
| goal + size > limit triggers the BUG_ON in the bootmem allocator.  So
| we need a version that passes limit ONLY if the usemap is smaller than
| the section.

after checking the code, the name of ___alloc_bootmem_node_nopanic() does
not reflect the fact.

Make bootmem really not panic.

Hope will kill bootmem sooner.

Signed-off-by: Yinghai Lu <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: <[email protected]>    [3.3.x, 3.4.x]
Signed-off-by: Andrew Morton <[email protected]>
---

 mm/bootmem.c |    4 ++++
 1 file changed, 4 insertions(+)

diff -puN 
mm/bootmem.c~bootmem-make-___alloc_bootmem_node_nopanic-to-be-real-nopanic 
mm/bootmem.c
--- a/mm/bootmem.c~bootmem-make-___alloc_bootmem_node_nopanic-to-be-real-nopanic
+++ a/mm/bootmem.c
@@ -710,6 +710,10 @@ again:
        if (ptr)
                return ptr;
 
+       /* do not panic in alloc_bootmem_bdata() */
+       if (limit && goal + size > limit)
+               limit = 0;
+
        ptr = alloc_bootmem_bdata(pgdat->bdata, size, align, goal, limit);
        if (ptr)
                return ptr;
_
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to