In sparse_decode_mem_map, makedumpfile checks whether coded_mem_map is a valid 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 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index 16081a5..1f06543 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -2794,12 +2794,14 @@ 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; + rerurn mem_map; int get_mm_sparsemem(void) -- 1.9.0