freebsd-skq/sys/dev/random
cem 5533a2632c random(4): Make entropy source deregistration safe
Allow loadable modules that provide random entropy source(s) to safely
unload.  Prior to this change, no driver could ensure that their
random_source structure was not being used by random_harvestq.c for any
period of time after invoking random_source_deregister().

This change converts the source_list LIST to a ConcurrencyKit CK_LIST and
uses an epoch(9) to protect typical read accesses of the list.  The existing
HARVEST_LOCK spin mutex is used to safely add and remove list entries.
random_source_deregister() uses epoch_wait() to ensure no concurrent
source_list readers are accessing a random_source before freeing the list
item and returning to the caller.

Callers can safely unload immediately after random_source_deregister()
returns.

Reviewed by:	markj
Approved by:	csprng(markm)
Discussed with:	jhb
Differential Revision:	https://reviews.freebsd.org/D22489
2019-12-30 01:38:19 +00:00
..
build.sh
darn.c
fortuna.c random(4): Simplify RANDOM_LOADABLE 2019-12-26 19:32:11 +00:00
fortuna.h
hash.c random(4): Flip default Fortuna generator over to Chacha20 2019-12-20 21:11:00 +00:00
hash.h
ivy.c
nehemiah.c
other_algorithm.c random(4): Simplify RANDOM_LOADABLE 2019-12-26 19:32:11 +00:00
other_algorithm.h
random_harvestq.c random(4): Make entropy source deregistration safe 2019-12-30 01:38:19 +00:00
random_harvestq.h
random_infra.c random(4): Simplify RANDOM_LOADABLE 2019-12-26 19:32:11 +00:00
randomdev.c random(4): Simplify RANDOM_LOADABLE 2019-12-26 19:32:11 +00:00
randomdev.h random(4): Simplify RANDOM_LOADABLE 2019-12-26 19:32:11 +00:00
uint128.h
unit_test.c
unit_test.h