svn commit: r358379 - head/sys/dev/random

Pawel Biernacki kaktus at FreeBSD.org
Thu Feb 27 13:12:16 UTC 2020


Author: kaktus
Date: Thu Feb 27 13:12:14 2020
New Revision: 358379
URL: https://svnweb.freebsd.org/changeset/base/358379

Log:
  Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (18 of many)
  
  r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are
  still not MPSAFE (or already are but aren’t properly marked).
  Use it in preparation for a general review of all nodes.
  
  This is non-functional change that adds annotations to SYSCTL_NODE and
  SYSCTL_PROC nodes using one of the soon-to-be-required flags.
  
  Mark all obvious cases as MPSAFE.  All entries that haven't been marked
  as MPSAFE before are by default marked as NEEDGIANT
  
  Reviewed by:	cem
  Approved by:	csprng, kib (mentor, blanket)
  Differential Revision:	https://reviews.freebsd.org/D23841

Modified:
  head/sys/dev/random/fortuna.c
  head/sys/dev/random/ivy.c
  head/sys/dev/random/random_harvestq.c
  head/sys/dev/random/random_infra.c

Modified: head/sys/dev/random/fortuna.c
==============================================================================
--- head/sys/dev/random/fortuna.c	Thu Feb 27 11:23:44 2020	(r358378)
+++ head/sys/dev/random/fortuna.c	Thu Feb 27 13:12:14 2020	(r358379)
@@ -299,14 +299,14 @@ random_fortuna_init_alg(void *unused __unused)
 	fortuna_state.fs_lasttime = 0;
 	random_fortuna_o = SYSCTL_ADD_NODE(&random_clist,
 		SYSCTL_STATIC_CHILDREN(_kern_random),
-		OID_AUTO, "fortuna", CTLFLAG_RW, 0,
+		OID_AUTO, "fortuna", CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
 		"Fortuna Parameters");
 	SYSCTL_ADD_PROC(&random_clist,
-		SYSCTL_CHILDREN(random_fortuna_o), OID_AUTO,
-		"minpoolsize", CTLTYPE_UINT | CTLFLAG_RWTUN,
-		&fortuna_state.fs_minpoolsize, RANDOM_FORTUNA_DEFPOOLSIZE,
-		random_check_uint_fs_minpoolsize, "IU",
-		"Minimum pool size necessary to cause a reseed");
+	    SYSCTL_CHILDREN(random_fortuna_o), OID_AUTO, "minpoolsize",
+	    CTLTYPE_UINT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+	    &fortuna_state.fs_minpoolsize, RANDOM_FORTUNA_DEFPOOLSIZE,
+	    random_check_uint_fs_minpoolsize, "IU",
+	    "Minimum pool size necessary to cause a reseed");
 	KASSERT(fortuna_state.fs_minpoolsize > 0, ("random: Fortuna threshold must be > 0 at startup"));
 
 	SYSCTL_ADD_BOOL(&random_clist, SYSCTL_CHILDREN(random_fortuna_o),

Modified: head/sys/dev/random/ivy.c
==============================================================================
--- head/sys/dev/random/ivy.c	Thu Feb 27 11:23:44 2020	(r358378)
+++ head/sys/dev/random/ivy.c	Thu Feb 27 13:12:14 2020	(r358379)
@@ -60,7 +60,7 @@ static struct random_source random_ivy = {
 	.rs_read = random_ivy_read
 };
 
-SYSCTL_NODE(_kern_random, OID_AUTO, rdrand, CTLFLAG_RW, 0,
+SYSCTL_NODE(_kern_random, OID_AUTO, rdrand, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
     "rdrand (ivy) entropy source");
 static bool acquire_independent_seed_samples = false;
 SYSCTL_BOOL(_kern_random_rdrand, OID_AUTO, rdrand_independent_seed,

Modified: head/sys/dev/random/random_harvestq.c
==============================================================================
--- head/sys/dev/random/random_harvestq.c	Thu Feb 27 11:23:44 2020	(r358378)
+++ head/sys/dev/random/random_harvestq.c	Thu Feb 27 13:12:14 2020	(r358379)
@@ -111,7 +111,7 @@ struct random_sources {
 static CK_LIST_HEAD(sources_head, random_sources) source_list =
     CK_LIST_HEAD_INITIALIZER(source_list);
 
-SYSCTL_NODE(_kern_random, OID_AUTO, harvest, CTLFLAG_RW, 0,
+SYSCTL_NODE(_kern_random, OID_AUTO, harvest, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
     "Entropy Device Parameters");
 
 /*
@@ -305,8 +305,10 @@ random_check_uint_harvestmask(SYSCTL_HANDLER_ARGS)
 	    (orig_value & user_immutable_mask);
 	return (0);
 }
-SYSCTL_PROC(_kern_random_harvest, OID_AUTO, mask, CTLTYPE_UINT | CTLFLAG_RW,
-    NULL, 0, random_check_uint_harvestmask, "IU", "Entropy harvesting mask");
+SYSCTL_PROC(_kern_random_harvest, OID_AUTO, mask,
+    CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, NULL, 0,
+    random_check_uint_harvestmask, "IU",
+    "Entropy harvesting mask");
 
 /* ARGSUSED */
 static int
@@ -326,7 +328,8 @@ random_print_harvestmask(SYSCTL_HANDLER_ARGS)
 	return (error);
 }
 SYSCTL_PROC(_kern_random_harvest, OID_AUTO, mask_bin,
-    CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, random_print_harvestmask, "A",
+    CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0,
+    random_print_harvestmask, "A",
     "Entropy harvesting mask (printable)");
 
 static const char *random_source_descr[ENTROPYSOURCE] = {
@@ -387,8 +390,9 @@ random_print_harvestmask_symbolic(SYSCTL_HANDLER_ARGS)
 	return (error);
 }
 SYSCTL_PROC(_kern_random_harvest, OID_AUTO, mask_symbolic,
-    CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, random_print_harvestmask_symbolic,
-    "A", "Entropy harvesting mask (symbolic)");
+    CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0,
+    random_print_harvestmask_symbolic, "A",
+    "Entropy harvesting mask (symbolic)");
 
 /* ARGSUSED */
 static void

Modified: head/sys/dev/random/random_infra.c
==============================================================================
--- head/sys/dev/random/random_infra.c	Thu Feb 27 11:23:44 2020	(r358378)
+++ head/sys/dev/random/random_infra.c	Thu Feb 27 13:12:14 2020	(r358379)
@@ -38,9 +38,10 @@ __FBSDID("$FreeBSD$");
 #include <dev/random/randomdev.h>
 
 /* Set up the sysctl root node for the entropy device */
-SYSCTL_NODE(_kern, OID_AUTO, random, CTLFLAG_RW, 0,
+SYSCTL_NODE(_kern, OID_AUTO, random, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
     "Cryptographically Secure Random Number Generator");
-SYSCTL_NODE(_kern_random, OID_AUTO, initial_seeding, CTLFLAG_RW, 0,
+SYSCTL_NODE(_kern_random, OID_AUTO, initial_seeding,
+    CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
     "Initial seeding control and information");
 
 /*


More information about the svn-src-all mailing list