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 <l...@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


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to