5533a2632c
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 |
||
---|---|---|
.. | ||
build.sh | ||
darn.c | ||
fortuna.c | ||
fortuna.h | ||
hash.c | ||
hash.h | ||
ivy.c | ||
nehemiah.c | ||
other_algorithm.c | ||
other_algorithm.h | ||
random_harvestq.c | ||
random_harvestq.h | ||
random_infra.c | ||
randomdev.c | ||
randomdev.h | ||
uint128.h | ||
unit_test.c | ||
unit_test.h |