--- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -1195,7 +1195,7 @@ sec, usec); #endif ticks = 1; - } else if (sec <= INT_MAX / hz) { + } else if (sec <= (INT_MAX - hz - 1) / hz) { ticks = (int)(sec * hz + howmany((u_long)usec, ustick)) + 1; } else { ticks = INT_MAX; @@ -1226,7 +1226,7 @@ sec, nsec); #endif ticks = 1; - } else if (sec <= INT_MAX / hz) { + } else if (sec <= (INT_MAX - hz - 1) / hz) { ticks = (int)(sec * hz + howmany((u_long)nsec, nstick)) + 1; } else { ticks = INT_MAX; @@ -1254,7 +1254,7 @@ long sec; sec = tv->tv_sec; - if (sec <= INT_MAX / hz) + if (sec <= (INT_MAX - hz - 1) / hz) ticks = (int)(sec * hz + (u_long)tv->tv_usec / ustick); else ticks = INT_MAX; @@ -1268,7 +1268,7 @@ long sec; sec = ts->tv_sec; - if (sec <= INT_MAX / hz) + if (sec <= (INT_MAX - hz - 1) / hz) ticks = (int)(sec * hz + (u_long)ts->tv_nsec / nstick); else ticks = INT_MAX;