The dumpfile header has this field, which was inherited from the old "diskdump" facility: struct disk_dump_header { ... unsigned int max_mapnr; /* = max_mapnr */ ... and which, among other things, is used by the crash utility as a delimiter to determine whether a physical address read request is legitimate. And obviously the field cannot handle PFN values greater than 32-bits. The makedumpfile source code does have its own max_mapnr representation in its DumpInfo structure in "makedumpfile.h": struct DumpInfo { ... unsigned long long max_mapnr; /* number of page descriptor */ ... But in its "diskdump_mod.h" file, it carries forward the old diskdump header format, which has the 32-bit field: struct disk_dump_header { ... unsigned int max_mapnr; /* = max_mapnr */ ... And here in "makedumpfile.c", the inadvertent truncation occurs when the PFN is greater than 32-bits: int write_kdump_header(void) { ... dh->max_mapnr = info->max_mapnr; ... Now upstream has below commit to fix this, back port it: commit 8e124174b62376b17ac909bc68622ef07bde6840 Author: Jingbai Ma <jingbai.ma@hp.com> Date: Fri Oct 18 18:53:38 2013 +0900 Signed-off-by: Baoquan He <bhe@redhat.com> Acked-by: Vivek Goyal <vgoyal@redhat.com> Acked-by: WANG Chao <chaowang@redhat.com>
Description
Languages
Shell
92.1%
Roff
6.7%
Makefile
1.2%