fill_mem_map_cache() intends to read page-size-or-less size if it cannot
read the whole cache size, but it seems it doesn't correctly, and shows
just zero for existing data.
crash> kmem -p 1000
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0000000040 1000 0 0 0 0
crash> rd ffffea0000000040
ffffea0000000040: 000fffff00000400 ........
I think the size below should be cnt, and confirmed that the patch works
well with a dump by makedumpfile -e option.
Signed-off-by: Kazuhito Hagio <k-hagio(a)ab.jp.nec.com>
---
memory.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/memory.c b/memory.c
index ac7e73679405..4584673ed0ae 100644
--- a/memory.c
+++ b/memory.c
@@ -6348,13 +6348,13 @@ fill_mem_map_cache(ulong pp, ulong ppend, char *page_cache)
if (cnt > size)
cnt = size;
- if (!readmem(addr, KVADDR, bufptr, size,
+ if (!readmem(addr, KVADDR, bufptr, cnt,
"virtual page struct cache", RETURN_ON_ERROR|QUIET)) {
- BZERO(bufptr, size);
- if (!(vt->flags & V_MEM_MAP) && ((addr+size) < ppend))
+ BZERO(bufptr, cnt);
+ if (!(vt->flags & V_MEM_MAP) && ((addr+cnt) < ppend))
error(WARNING,
"mem_map[] from %lx to %lx not accessible\n",
- addr, addr+size);
+ addr, addr+cnt);
}
addr += cnt;
--
2.18.1
Show replies by date