>In makedumpfile.c, we want the progress printed 10000 times. >It is tested by: > >(num_dumped % per) == 0 > >where per is num_dumpable / 10000. > >However, if num_dumpable less than 10000, num_dumped % per causes a >divide-by-zero problem, triggers a SIGFPE. > >This patch makes sure per never be 0. Good fix, thanks. Acked-by: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp> >Signed-off-by: Wang Nan <wangnan0 at huawei.com> >Cc: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp> >Cc: kexec at lists.infradead.org >Cc: Geng Hui <hui.geng at huawei.com> >Cc: Simon Horman <horms at verge.net.au> >--- > makedumpfile.c | 4 ++++ > 1 file changed, 4 insertions(+) > >diff --git a/makedumpfile.c b/makedumpfile.c >index 23251a1..d71977a 100644 >--- a/makedumpfile.c >+++ b/makedumpfile.c >@@ -5621,6 +5621,7 @@ write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page) > > num_dumpable = get_num_dumpable(); > per = num_dumpable / 10000; >+ per = per ? per : 1; > > off_seg_load = info->offset_load_dumpfile; > cd_page->offset = info->offset_load_dumpfile; >@@ -5906,6 +5907,7 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page) > > num_dumpable = info->num_dumpable; > per = num_dumpable / 10000; >+ per = per ? per : 1; > > off_seg_load = info->offset_load_dumpfile; > cd_page->offset = info->offset_load_dumpfile; >@@ -6164,6 +6166,7 @@ write_kdump_pages(struct cache_data *cd_header, struct cache_data *cd_page) > > num_dumpable = get_num_dumpable(); > per = num_dumpable / 10000; >+ per = per ? per : 1; > > /* > * Calculate the offset of the page data. >@@ -6365,6 +6368,7 @@ write_kdump_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_pag > } > > per = info->num_dumpable / 10000; >+ per = per ? per : 1; > > /* > * Set a fileoffset of Physical Address 0x0. >-- >1.8.4