Author: delphij
Date: Mon Jun 11 07:11:34 2012
New Revision: 236875
URL: http://svn.freebsd.org/changeset/base/236875

Log:
  MFC r236572:
  
  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.
  
  Reported by:  Mahesh Arumugam
  Submitted by: Dorr H. Clark via gnn
  Sponsored by: Citrix / NetScaler

Modified:
  stable/9/usr.sbin/inetd/inetd.c
  stable/9/usr.sbin/inetd/inetd.h
Directory Properties:
  stable/9/usr.sbin/inetd/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/7/usr.sbin/inetd/inetd.c
  stable/7/usr.sbin/inetd/inetd.h
  stable/8/usr.sbin/inetd/inetd.c
  stable/8/usr.sbin/inetd/inetd.h
Directory Properties:
  stable/7/usr.sbin/inetd/   (props changed)
  stable/8/usr.sbin/inetd/   (props changed)

Modified: stable/9/usr.sbin/inetd/inetd.c
==============================================================================
--- stable/9/usr.sbin/inetd/inetd.c     Mon Jun 11 07:08:40 2012        
(r236874)
+++ stable/9/usr.sbin/inetd/inetd.c     Mon Jun 11 07:11:34 2012        
(r236875)
@@ -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: stable/9/usr.sbin/inetd/inetd.h
==============================================================================
--- stable/9/usr.sbin/inetd/inetd.h     Mon Jun 11 07:08:40 2012        
(r236874)
+++ stable/9/usr.sbin/inetd/inetd.h     Mon Jun 11 07:11:34 2012        
(r236875)
@@ -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;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to