Hi Mikhail, > -----Original Message----- > When building a dump bitmap (2nd bitmap) for the ELF dump, the last pfn > of the cycle is always ignored in exclude_nodata_pages() function due to > off-by-one error on cycle boundary check. Thus, the respective bit of > the bitmap is never cleared. > That can lead to the error when such a pfn should not be dumpable (e.g. > the last pfn of the ELF-load of zero filesize). Based on the bit in the > bitmap the page is treated as dumpable in write_elf_pages_cyclic() function > and the follow on error is triggered in write_elf_load_segment() function > due to the failing sanity check of paddr_to_offset2():
Good catch. I could reproduce this issue with a vmcore on hand and confirm that the patch fixed it. Looks good to me, applied. Thanks, Kazu > > $ makedumpfile -E dump.elf dump.elf.E > Checking for memory holes : [100.0 %] | > write_elf_load_segment: Can't convert physaddr(7ffff000) to an offset. > makedumpfile Failed. > > Signed-off-by: Mikhail Zaslonko <zaslo...@linux.ibm.com> > --- > makedumpfile.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index de0973f..4a00011 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -4740,7 +4740,7 @@ exclude_nodata_pages(struct cycle *cycle) > if (pfn < cycle->start_pfn) > pfn = cycle->start_pfn; > if (pfn_end >= cycle->end_pfn) > - pfn_end = cycle->end_pfn - 1; > + pfn_end = cycle->end_pfn; > while (pfn < pfn_end) { > clear_bit_on_2nd_bitmap(pfn, cycle); > ++pfn; > -- > 2.17.1 > > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec