RE: makedumpfile: Fix divide by zero in print_report()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dave,

> -----Original Message-----
> If info->max_mapnr and pfn_memhole are equal, we divide by zero when
> trying determine the 'shrinking' value.
> 
> On the system I saw this error, we arrived at this function with
> info->max_mapnr:0x0000000001080000 pfn_memhole:0x0000000001080000

Thank you for the patch.
I suppose that you see the error with the -E option, right?

It seems that the -E option has some problems with its statistics,
so I'm checking whether there is a better way to fix this.

Thanks,
Kazu

> 
> Change the code to only print out the shrinking value if it makes sense.
> 
> Signed-off-by: Dave Jones <davej@xxxxxxxxxxxxxxxxx>
> 
> diff -wbBdu -urN makedumpfile-1.6.6/makedumpfile.c src/makedumpfile-code/makedumpfile.c
> --- makedumpfile-1.6.6/makedumpfile.c	2019-06-27 08:42:40.000000000 -0400
> +++ makedumpfile-code/makedumpfile.c	2019-09-24 15:28:06.456549495 -0400
> @@ -9778,8 +9778,6 @@
> 
>  	pfn_excluded = pfn_zero + pfn_cache + pfn_cache_private
>  	    + pfn_user + pfn_free + pfn_hwpoison + pfn_offline;
> -	shrinking = (pfn_original - pfn_excluded) * 100;
> -	shrinking = shrinking / pfn_original;
> 
>  	REPORT_MSG("\n");
>  	REPORT_MSG("Original pages  : 0x%016llx\n", pfn_original);
> @@ -9794,8 +9792,13 @@
>  	REPORT_MSG("    Offline pages           : 0x%016llx\n", pfn_offline);
>  	REPORT_MSG("  Remaining pages  : 0x%016llx\n",
>  	    pfn_original - pfn_excluded);
> -	REPORT_MSG("  (The number of pages is reduced to %lld%%.)\n",
> -	    shrinking);
> +
> +	if (pfn_original != 0) {
> +		shrinking = (pfn_original - pfn_excluded) * 100;
> +		shrinking = shrinking / pfn_original;
> +		REPORT_MSG("  (The number of pages is reduced to %lld%%.)\n",
> +		    shrinking);
> +	}
>  	REPORT_MSG("Memory Hole     : 0x%016llx\n", pfn_memhole);
>  	REPORT_MSG("--------------------------------------------------\n");
>  	REPORT_MSG("Total pages     : 0x%016llx\n", info->max_mapnr);



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



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux