In sparse_decode_mem_map, makedumpfile checks whether coded_mem_map is a vald vaddr. But coded_mem_map is not real vaddr. So this patch checks decoded_mem_map instead. Signed-off-by: Liu Hua <sdu.liu at huawei.com> --- makedumpfile.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index 16081a5..94515f6 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -2794,13 +2794,15 @@ section_mem_map_addr(unsigned long addr) unsigned long sparse_decode_mem_map(unsigned long coded_mem_map, unsigned long section_nr) { - if (!is_kvaddr(coded_mem_map)) - return NOT_KV_ADDR; + unsigned long mem_map; - return coded_mem_map + + mem_map = coded_mem_map + (SECTION_NR_TO_PFN(section_nr) * SIZE(page)); -} + if (!is_kvaddr(mem_map)) + return NOT_KV_ADDR; + return mem_map; +} int get_mm_sparsemem(void) { -- 1.9.0