summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-04-21 13:27:16 +0800
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-15 09:40:18 -0700
commitd1e765382f287bd9707b95600b6424eea2c4326b (patch)
tree1c0d9872255bf764d398599f0530eb1c637a5393
parent8d21b16b57f4cc8551145da6e6b8177fbedebf1c (diff)
crypto: api - Fix algorithm module auto-loading
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>
-rw-r--r--crypto/api.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 38a2bc02a98c..e7aa72d89e6b 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -221,7 +221,8 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask)
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);