Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1540016
| From | Wei Yang <richard.weiyang@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/2] mm/memblock.c: check return value of memblock_reserve() in memblock_virt_alloc_internal() |
| Date | 2016-12-11 14:10 +0100 |
| Message-ID | <sNc38-7ZF-45@gated-at.bofh.it> (permalink) |
| References | <sNc37-7ZF-13@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
memblock_reserve() may fail in case there is not enough regions.
This patch checks the return value.
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
---
mm/memblock.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/mm/memblock.c b/mm/memblock.c
index 9d402d05..83ad703 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1268,18 +1268,17 @@ static void * __init memblock_virt_alloc_internal(
if (max_addr > memblock.current_limit)
max_addr = memblock.current_limit;
-
again:
alloc = memblock_find_in_range_node(size, align, min_addr, max_addr,
nid, flags);
- if (alloc)
+ if (alloc && !memblock_reserve(alloc, size))
goto done;
if (nid != NUMA_NO_NODE) {
alloc = memblock_find_in_range_node(size, align, min_addr,
max_addr, NUMA_NO_NODE,
flags);
- if (alloc)
+ if (alloc && !memblock_reserve(alloc, size))
goto done;
}
@@ -1297,7 +1296,6 @@ again:
return NULL;
done:
- memblock_reserve(alloc, size);
ptr = phys_to_virt(alloc);
memset(ptr, 0, size);
--
1.7.9.5
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 0/2] mm/memblock.c: fix potential bug and code refine Wei Yang <richard.weiyang@gmail.com> - 2016-12-11 14:10 +0100 [PATCH 2/2] mm/memblock.c: check return value of memblock_reserve() in memblock_virt_alloc_internal() Wei Yang <richard.weiyang@gmail.com> - 2016-12-11 14:10 +0100
csiph-web