diff options
author | kib <kib@FreeBSD.org> | 2014-12-18 11:10:15 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2014-12-18 11:10:15 +0000 |
commit | 3abf5d53d81ee69ddbaeabfdfe7a6eb8a7c1d1d5 (patch) | |
tree | f99e3f86dda5dc6da37b3d0be2d844d3245dddba | |
parent | 66c7f00f2922225707ca7d952b314eb6d1184a32 (diff) | |
download | FreeBSD-src-3abf5d53d81ee69ddbaeabfdfe7a6eb8a7c1d1d5.zip FreeBSD-src-3abf5d53d81ee69ddbaeabfdfe7a6eb8a7c1d1d5.tar.gz |
MFC r259609 (by se):
Fix overflow for timeout values of more than 68 years, which is the maximum
covered by sbintime (LONG_MAX seconds).
MFC r259633 (by se):
Fix compilation on 32 bit architectures and use INT64_MAX instead of
LONG_MAX for the upper bound check.
-rw-r--r-- | sys/kern/kern_event.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 8ab59bb..e70a9cf 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -522,10 +522,14 @@ knote_fork(struct knlist *list, int pid) * XXX: EVFILT_TIMER should perhaps live in kern_time.c beside the * interval timer support code. */ -static __inline sbintime_t +static __inline sbintime_t timer2sbintime(intptr_t data) { +#ifdef __LP64__ + if (data > INT64_MAX / SBT_1MS) + return INT64_MAX; +#endif return (SBT_1MS * data); } |