Fix division by zero, causing floating point exception in a drive progress

command.

It was possible to read a value of zero from a busy controller used
as the divisor to calculate the remaining rebuild time.

Reported by:	Pavel Udovenko <udovenko att nic.ru>
Discussed with:	jhb
Approved by:	kib (mentor)
MFC after:	1 week
This commit is contained in:
Sergey Kandaurov 2011-02-25 13:59:59 +00:00
parent 9a253c101e
commit 023c93f2c8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=219031

View File

@ -316,7 +316,7 @@ mfi_display_progress(const char *label, struct mfi_progress *prog)
printf("%s: %.2f%% complete, after %ds", label,
(float)prog->progress * 100 / 0xffff, prog->elapsed_seconds);
if (prog->elapsed_seconds > 10) {
if (prog->progress != 0 && prog->elapsed_seconds > 10) {
printf(" finished in ");
seconds = (0x10000 * (uint32_t)prog->elapsed_seconds) /
prog->progress - prog->elapsed_seconds;