Commit 449e8df39d3f94a69deae8341f157f6ef5999015
1 parent
bf23c51f1f
Exists in
master
and in
20 other branches
memblock: Add debug markers at the end of the array
Since we allocate one more than needed, why not do a bit of sanity checking here to ensure we don't walk past the end of the array ? Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Showing 1 changed file with 11 additions and 0 deletions Side-by-side Diff
mm/memblock.c
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 | #include <linux/kernel.h> |
14 | 14 | #include <linux/init.h> |
15 | 15 | #include <linux/bitops.h> |
16 | +#include <linux/poison.h> | |
16 | 17 | #include <linux/memblock.h> |
17 | 18 | |
18 | 19 | struct memblock memblock; |
... | ... | @@ -112,6 +113,10 @@ |
112 | 113 | memblock.reserved.regions = memblock_reserved_init_regions; |
113 | 114 | memblock.reserved.max = INIT_MEMBLOCK_REGIONS; |
114 | 115 | |
116 | + /* Write a marker in the unused last array entry */ | |
117 | + memblock.memory.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE; | |
118 | + memblock.reserved.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE; | |
119 | + | |
115 | 120 | /* Create a dummy zero size MEMBLOCK which will get coalesced away later. |
116 | 121 | * This simplifies the memblock_add() code below... |
117 | 122 | */ |
... | ... | @@ -130,6 +135,12 @@ |
130 | 135 | void __init memblock_analyze(void) |
131 | 136 | { |
132 | 137 | int i; |
138 | + | |
139 | + /* Check marker in the unused last array entry */ | |
140 | + WARN_ON(memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS].base | |
141 | + != (phys_addr_t)RED_INACTIVE); | |
142 | + WARN_ON(memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS].base | |
143 | + != (phys_addr_t)RED_INACTIVE); | |
133 | 144 | |
134 | 145 | memblock.memory_size = 0; |
135 | 146 |