Message ID | 20200407060240.175837-1-ebiggers@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Herbert Xu |
Headers | show |
Series | [v2] crypto: algapi - Avoid spurious modprobe on LOADED | expand |
Eric, > Currently after any algorithm is registered and tested, there's an > unnecessary request_module("cryptomgr") even if it's already loaded. > Also, CRYPTO_MSG_ALG_LOADED is sent twice, and thus if the algorithm > is "crct10dif", lib/crc-t10dif.c replaces the tfm twice rather than > once. > > This occurs because CRYPTO_MSG_ALG_LOADED is sent using > crypto_probing_notify(), which tries to load "cryptomgr" if the > notification is not handled (NOTIFY_DONE). This doesn't make sense > because "cryptomgr" doesn't handle this notification. > > Fix this by using crypto_notify() instead of crypto_probing_notify(). Looks good to me. Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
On Mon, Apr 06, 2020 at 11:02:40PM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > Currently after any algorithm is registered and tested, there's an > unnecessary request_module("cryptomgr") even if it's already loaded. > Also, CRYPTO_MSG_ALG_LOADED is sent twice, and thus if the algorithm is > "crct10dif", lib/crc-t10dif.c replaces the tfm twice rather than once. > > This occurs because CRYPTO_MSG_ALG_LOADED is sent using > crypto_probing_notify(), which tries to load "cryptomgr" if the > notification is not handled (NOTIFY_DONE). This doesn't make sense > because "cryptomgr" doesn't handle this notification. > > Fix this by using crypto_notify() instead of crypto_probing_notify(). > > Fixes: dd8b083f9a5e ("crypto: api - Introduce notifier for new crypto algorithms") > Cc: <stable@vger.kernel.org> # v4.20+ > Cc: Martin K. Petersen <martin.petersen@oracle.com> > Signed-off-by: Eric Biggers <ebiggers@google.com> > Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> > --- > crypto/algapi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Patch applied. Thanks.
diff --git a/crypto/algapi.c b/crypto/algapi.c index 69605e21af92..849254d7e627 100644 --- a/crypto/algapi.c +++ b/crypto/algapi.c @@ -403,7 +403,7 @@ static void crypto_wait_for_test(struct crypto_larval *larval) err = wait_for_completion_killable(&larval->completion); WARN_ON(err); if (!err) - crypto_probing_notify(CRYPTO_MSG_ALG_LOADED, larval); + crypto_notify(CRYPTO_MSG_ALG_LOADED, larval); out: crypto_larval_kill(&larval->alg);