[makedumpfile PATCH] check for invalid physical address of /proc/kcore when make ELF format dumpfile

Tao Liu ltao at redhat.com
Fri Jun 18 03:28:04 PDT 2021


Previously when executing makedumpfile with -E option against /proc/kcore,
makedumpfile will fail:

    $ sudo makedumpfile -E -d 31 /proc/kcore vmcore
    ...
    write_elf_load_segment: Can't convert physaddr(ffffffffffffffff) to an
    offset.

    makedumpfile Failed.

It's because /proc/kcore contains PT_LOAD program headers which have
physaddr(ffffffffffffffff). With -E option, makedumpfile will try to convert
the physaddr to an offset and fails.

In this patch, let's skip the PT_LOAD program headers which have such physaddr.

Signed-off-by: Tao Liu <ltao at redhat.com>
---
 makedumpfile.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/makedumpfile.c b/makedumpfile.c
index 894c88e..8c93c54 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -7767,6 +7767,9 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
 		if (load.p_type != PT_LOAD)
 			continue;
 
+		if (load.p_paddr == -1)
+			continue;
+
 		off_memory= load.p_offset;
 		paddr = load.p_paddr;
 		pfn_start = paddr_to_pfn(load.p_paddr);
-- 
2.29.2




More information about the kexec mailing list