Index: sys/kern/kern_timeout.c =================================================================== --- sys/kern/kern_timeout.c (revision 237502) +++ sys/kern/kern_timeout.c (working copy) @@ -158,6 +158,9 @@ (bt)->frac = ((uint64_t)0x8000000000000000 / (freq)) << 1; \ } +#define TIME_T_MAX \ + (sizeof(time_t) == (sizeof(__int64_t)) ? INT64_MAX : INT32_MAX) + static int timeout_cpu; void (*callout_new_inserted)(int cpu, struct bintime bt) = NULL; @@ -410,8 +413,8 @@ first = (first + 1) & callwheelmask; } future = ((last + hz/4) & callwheelmask); - max.sec = max.frac = INT_MAX; - min.sec = min.frac = INT_MAX; + max.sec = min.sec = TIME_T_MAX; + max.frac = min.frac = UINT64_MAX; limit.sec = 0; limit.frac = (uint64_t)1 << (64 - 2); bintime_add(&limit, &now); @@ -449,11 +452,11 @@ max = (bintime_cmp(&tmp_max, &max, >)) ? tmp_max : max; } if (last == future || - (max.sec != INT_MAX && min.sec != INT_MAX)) + (max.sec != TIME_T_MAX && min.sec != TIME_T_MAX)) break; last = (last + 1) & callwheelmask; } - if (max.sec == INT_MAX && min.sec == INT_MAX) { + if (max.sec == TIME_T_MAX && min.sec == TIME_T_MAX) { next.sec = 0; next.frac = (uint64_t)1 << (64 - 2); bintime_add(&next, &now);