Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > @@ -432,17 +448,16 @@ int crypto_register_alg(struct crypto_alg *alg) > return err; > > down_write(&crypto_alg_sem); > - larval = __crypto_register_alg(alg); > - test_started = static_key_enabled(&crypto_boot_test_finished); > + larval = __crypto_register_alg(alg, &algs_to_put); > if (!IS_ERR_OR_NULL(larval)) > - larval->test_started = test_started; > + larval->test_started = static_key_enabled(&crypto_boot_test_finished); > up_write(&crypto_alg_sem); > > - if (IS_ERR_OR_NULL(larval)) > + if (IS_ERR(larval)) > return PTR_ERR(larval); > - > - if (test_started) > + if (larval && larval->test_started) > crypto_wait_for_test(larval); > + crypto_remove_final(&algs_to_put); > return 0; > } Is it safe to test larval->test_started instead of the local test_started? This value could change from false to true behind your back. Cheers, -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt