svn commit: r236572 - head/usr.sbin/inetd
Xin LI
delphij at FreeBSD.org
Mon Jun 4 18:02:10 UTC 2012
Author: delphij
Date: Mon Jun 4 18:02:09 2012
New Revision: 236572
URL: http://svn.freebsd.org/changeset/base/236572
Log:
Replace the use of wall clock time with monotonically increasing
clock. In general, gettimeofday() is not appropriate interface
when accounting for elasped time because it can go backward, in
which case the policy code could errornously consider the limit
as exceeded.
MFC after: 1 week
Reported by: Mahesh Arumugam
Submitted by: Dorr H. Clark via gnn
Sponsored by: Citrix / NetScaler
Modified:
head/usr.sbin/inetd/inetd.c
head/usr.sbin/inetd/inetd.h
Modified: head/usr.sbin/inetd/inetd.c
==============================================================================
--- head/usr.sbin/inetd/inetd.c Mon Jun 4 17:22:43 2012 (r236571)
+++ head/usr.sbin/inetd/inetd.c Mon Jun 4 18:02:09 2012 (r236572)
@@ -688,11 +688,11 @@ main(int argc, char **argv)
*/
if (dofork) {
if (sep->se_count++ == 0)
- (void)gettimeofday(&sep->se_time, (struct timezone *)NULL);
+ (void)clock_gettime(CLOCK_MONOTONIC_FAST, &sep->se_time);
else if (toomany > 0 && sep->se_count >= toomany) {
- struct timeval now;
+ struct timespec now;
- (void)gettimeofday(&now, (struct timezone *)NULL);
+ (void)clock_gettime(CLOCK_MONOTONIC_FAST, &now);
if (now.tv_sec - sep->se_time.tv_sec >
CNT_INTVL) {
sep->se_time = now;
Modified: head/usr.sbin/inetd/inetd.h
==============================================================================
--- head/usr.sbin/inetd/inetd.h Mon Jun 4 17:22:43 2012 (r236571)
+++ head/usr.sbin/inetd/inetd.h Mon Jun 4 18:02:09 2012 (r236572)
@@ -109,7 +109,7 @@ struct servtab {
u_int se_rpc_lowvers; /* RPC low version */
u_int se_rpc_highvers; /* RPC high version */
int se_count; /* number started since se_time */
- struct timeval se_time; /* start of se_count */
+ struct timespec se_time; /* start of se_count */
struct servtab *se_next;
struct se_flags {
u_int se_nomapped : 1;
More information about the svn-src-head
mailing list