Am Montag, 25. Oktober 2021, 11:25:22 CEST schrieb Nicolai Stange: Hi Nicolai, > Since commit 42ea507fae1a ("crypto: drbg - reseed often if seedsource is > degraded"), the maximum seed lifetime represented by ->reseed_threshold > gets temporarily lowered if the get_random_bytes() source cannot provide > sufficient entropy yet, as is common during boot, and restored back to > the original value again once that has changed. > > More specifically, if the add_random_ready_callback() invoked from > drbg_prepare_hrng() in the course of DRBG instantiation does not return > -EALREADY, that is, if get_random_bytes() has not been fully initialized > at this point yet, drbg_prepare_hrng() will lower ->reseed_threshold > to a value of 50. The drbg_async_seed() scheduled from said > random_ready_callback will eventually restore the original value. > > A future patch will replace the random_ready_callback based notification > mechanism and thus, there will be no add_random_ready_callback() return > value anymore which could get compared to -EALREADY. > > However, there's __drbg_seed() which gets invoked in the course of both, > the DRBG instantiation as well as the eventual reseeding from > get_random_bytes() in aforementioned drbg_async_seed(), if any. Moreover, > it knows about the get_random_bytes() initialization state by the time the > seed data had been obtained from it: the new_seed_state argument introduced > with the previous patch would get set to DRBG_SEED_STATE_PARTIAL in case > get_random_bytes() had not been fully initialized yet and to > DRBG_SEED_STATE_FULL otherwise. Thus, __drbg_seed() provides a convenient > alternative for managing that ->reseed_threshold lowering and restoring at > a central place. > > Move all ->reseed_threshold adjustment code from drbg_prepare_hrng() and > drbg_async_seed() respectively to __drbg_seed(). Make __drbg_seed() > lower the ->reseed_threshold to 50 in case its new_seed_state argument > equals DRBG_SEED_STATE_PARTIAL and let it restore the original value > otherwise. > > There is no change in behaviour. > > Signed-off-by: Nicolai Stange <nstange@xxxxxxx> Reviewed-by: Stephan Müller <smueller@xxxxxxxxxx> Ciao Stephan