| From 920884df5ff222295d5d0636fc5e49f9a52f1db5 Mon Sep 17 00:00:00 2001 |
| From: Eric Biggers <ebiggers@google.com> |
| Date: Mon, 6 Apr 2020 23:02:40 -0700 |
| Subject: [PATCH] crypto: algapi - Avoid spurious modprobe on LOADED |
| |
| commit beeb460cd12ac9b91640b484b6a52dcba9d9fc8f upstream. |
| |
| 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> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/crypto/algapi.c b/crypto/algapi.c |
| index 4f799ece1533..9baf5791af8d 100644 |
| --- a/crypto/algapi.c |
| +++ b/crypto/algapi.c |
| @@ -390,7 +390,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); |
| -- |
| 2.27.0 |
| |