Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Mar 2017 06:20:06 +0000 (UTC)
From:      Don Lewis <truckman@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r316324 - stable/11/sys/netpfil/ipfw
Message-ID:  <201703310620.v2V6K6Eu092683@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: truckman
Date: Fri Mar 31 06:20:06 2017
New Revision: 316324
URL: https://svnweb.freebsd.org/changeset/base/316324

Log:
  MFC r315516
  
  Change several constants used by the PIE algorithm from unsigned to signed.
  
   - PIE_MAX_PROB is compared to variable of int64_t and the type promotion
     rules can cause the value of that variable to be treated as unsigned.
     If the value is actually negative, then the result of the comparsion
     is incorrect, causing the algorithm to perform poorly in some
     situations.  Changing the constant to be signed cause the comparision
     to work correctly.
  
   - PIE_SCALE is also compared to signed values.  Fortunately they are
     also compared to zero and negative values are discarded so this is
     more of a cosmetic fix.
  
   - PIE_DQ_THRESHOLD is only compared to unsigned values, but it is small
     enough that the automatic promotion to unsigned is harmless.
  
  Submitted by:	Rasool Al-Saadi <ralsaadi@swin.edu.au>

Modified:
  stable/11/sys/netpfil/ipfw/dn_aqm_pie.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netpfil/ipfw/dn_aqm_pie.h
==============================================================================
--- stable/11/sys/netpfil/ipfw/dn_aqm_pie.h	Fri Mar 31 04:51:08 2017	(r316323)
+++ stable/11/sys/netpfil/ipfw/dn_aqm_pie.h	Fri Mar 31 06:20:06 2017	(r316324)
@@ -37,16 +37,16 @@
 #define DN_AQM_PIE 2
 #define PIE_DQ_THRESHOLD_BITS 14
 /* 2^14 =16KB */
-#define PIE_DQ_THRESHOLD (1UL << PIE_DQ_THRESHOLD_BITS) 
+#define PIE_DQ_THRESHOLD (1L << PIE_DQ_THRESHOLD_BITS) 
 #define MEAN_PKTSIZE 800
 
 /* 31-bits because random() generates range from 0->(2**31)-1 */
 #define PIE_PROB_BITS 31
-#define PIE_MAX_PROB ((1ULL<<PIE_PROB_BITS) -1)
+#define PIE_MAX_PROB ((1LL<<PIE_PROB_BITS) -1)
 
 /* for 16-bits, we have 3-bits for integer part and 13-bits for fraction */
 #define PIE_FIX_POINT_BITS 13
-#define PIE_SCALE (1UL<<PIE_FIX_POINT_BITS)
+#define PIE_SCALE (1L<<PIE_FIX_POINT_BITS)
 
 
 /* PIE options */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703310620.v2V6K6Eu092683>