| From 37fc334cc8eb84f5fe0a5a1cbe6a6a68049e142a Mon Sep 17 00:00:00 2001 |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| Date: Tue, 21 Apr 2009 13:27:16 +0800 |
| Subject: crypto: api - Fix algorithm module auto-loading |
| |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| |
| commit 37fc334cc8eb84f5fe0a5a1cbe6a6a68049e142a upstream. |
| |
| The commit a760a6656e6f00bb0144a42a048cf0266646e22c (crypto: |
| api - Fix module load deadlock with fallback algorithms) broke |
| the auto-loading of algorithms that require fallbacks. The |
| problem is that the fallback mask check is missing an and which |
| cauess bits that should be considered to interfere with the |
| result. |
| |
| Reported-by: Chuck Ebbert <cebbert@redhat.com> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| crypto/api.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/crypto/api.c |
| +++ b/crypto/api.c |
| @@ -221,7 +221,8 @@ struct crypto_alg *crypto_larval_lookup( |
| |
| request_module(name); |
| |
| - if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask) && |
| + if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask & |
| + CRYPTO_ALG_NEED_FALLBACK) && |
| snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp)) |
| request_module(tmp); |
| |