Messages in this thread Patch in this message | | | From | Philipp Hachtmann <> | Subject | [PATCH 1/2] mm, nobootmem: Add return value check in __alloc_memory_core_early() | Date | Tue, 7 Jan 2014 16:16:13 +0100 |
| |
When memblock_reserve() fails because memblock.reserved.regions cannot be resized, the caller (e.g. alloc_bootmem()) is not informed of the failed allocation. Therefore alloc_bootmem() silently returns the same pointer again and again. This patch adds a check for the return value of memblock_reserve() in __alloc_memory_core().
Signed-off-by: Philipp Hachtmann <phacht@linux.vnet.ibm.com> --- mm/nobootmem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/nobootmem.c b/mm/nobootmem.c index 2c254d3..3a7e14d 100644 --- a/mm/nobootmem.c +++ b/mm/nobootmem.c @@ -45,7 +45,9 @@ static void * __init __alloc_memory_core_early(int nid, u64 size, u64 align, if (!addr) return NULL; - memblock_reserve(addr, size); + if (memblock_reserve(addr, size)) + return NULL; + ptr = phys_to_virt(addr); memset(ptr, 0, size); /* -- 1.8.4.5
| |