crypto: api - Fix algorithm module auto-loading
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 21 Apr 2009 05:27:16 +0000 (13:27 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 21 Apr 2009 05:27:16 +0000 (13:27 +0800)
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>
crypto/api.c

index 314dab96840e2792ee7af4b205b2ab63722faac4..fd2545decb280a6045c1c5fa19447e6bc1fbe907 100644 (file)
@@ -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);