diff options
author | 2006-06-29 19:52:47 +0000 | |
---|---|---|
committer | 2006-06-29 19:52:47 +0000 | |
commit | 53b9ed8b5f7e2ea40116ae274e4cf75239e21763 (patch) | |
tree | 583ba093539949b22621d7abf83560175af83967 /sys/kern/kern_time.c | |
parent | regen (diff) | |
download | wireguard-openbsd-53b9ed8b5f7e2ea40116ae274e4cf75239e21763.tar.xz wireguard-openbsd-53b9ed8b5f7e2ea40116ae274e4cf75239e21763.zip |
Normalize the correction passed to adjtime(2) before using it in the
__HAVE_TIMECOUNTER case.
ok otto@
Diffstat (limited to 'sys/kern/kern_time.c')
-rw-r--r-- | sys/kern/kern_time.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 52ede68e8d7..3f1e10b57dd 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_time.c,v 1.58 2006/06/27 10:41:27 otto Exp $ */ +/* $OpenBSD: kern_time.c,v 1.59 2006/06/29 19:52:47 kettenis Exp $ */ /* $NetBSD: kern_time.c,v 1.20 1996/02/18 11:57:06 fvdl Exp $ */ /* @@ -423,6 +423,15 @@ sys_adjtime(struct proc *p, void *v, register_t *retval) return (error); } + /* Normalize the correction. */ + while (adjtimedelta.tv_usec >= 1000000) { + adjtimedelta.tv_usec -= 1000000; + adjtimedelta.tv_sec += 1; + } + while (adjtimedelta.tv_usec < 0) { + adjtimedelta.tv_usec += 1000000; + adjtimedelta.tv_sec -= 1; + } return (0); #else struct timeval atv; |