K 10 svn:author V 6 obrien K 8 svn:date V 27 2022-02-22T07:30:53.164403Z K 7 svn:log V 950 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. (cherry picked from commit 374c99911ee45c5d2ddd42bc6bcf711a8a66b07e) Git Hash: 7878a69e0415251e4c7a0d3447f998207258ad41 Git Author: cem@FreeBSD.org END