Author: cem
Date: Sat Oct 20 20:49:37 2018
New Revision: 339487
URL: https://svnweb.freebsd.org/changeset/base/339487

Log:
  random(4): Translate a comment requirement into a compile-time invariant
  
  In various places, random represents the set of sources as a 32-bit word
  bitmask.  It assumes all sources fit within this, i.e., the maximum valid
  source number is 31.
  
  There was a comment specifying this limitation, but we can actually refuse
  to compile if our assumption is violated instead.  We still have a few spare
  random source slots, but sooner or later someone may need to convert the
  masks used from raw 32-bit words to bitset(9) APIs.
  
  This prevents some kinds of developer foot-shooting when adding new random
  sources.  No functional change.
  
  Reviewed by:  delphij, markm
  Approved by:  secteam (delphij)
  Sponsored by: Dell EMC Isilon
  Differential Revision:        https://reviews.freebsd.org/D16982

Modified:
  head/sys/sys/random.h

Modified: head/sys/sys/random.h
==============================================================================
--- head/sys/sys/random.h       Sat Oct 20 20:45:49 2018        (r339486)
+++ head/sys/sys/random.h       Sat Oct 20 20:49:37 2018        (r339487)
@@ -57,9 +57,6 @@ read_random(void *a __unused, u_int b __unused)
  * Note: if you add or remove members of random_entropy_source, remember to
  * also update the strings in the static array random_source_descr[] in
  * random_harvestq.c.
- *
- * NOTE: complain loudly to markm@ or on the lists if this enum gets more than 
32
- * distinct values (0-31)! ENTROPYSOURCE may be == 32, but not > 32.
  */
 enum random_entropy_source {
        RANDOM_START = 0,
@@ -92,6 +89,8 @@ enum random_entropy_source {
        RANDOM_PURE_DARN,
        ENTROPYSOURCE
 };
+_Static_assert(ENTROPYSOURCE <= 32,
+    "hardcoded assumption that values fit in a typical word-sized bitset");
 
 #define RANDOM_HARVEST_EVERYTHING_MASK ((1 << (RANDOM_ENVIRONMENTAL_END + 1)) 
- 1)
 #define RANDOM_HARVEST_PURE_MASK (((1 << ENTROPYSOURCE) - 1) & (-1UL << 
RANDOM_PURE_START))
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to