summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-03-04 20:20:10 +0100
committerIngo Molnar <mingo@elte.hu>2009-03-04 20:20:10 +0100
commit0e712279ff8b5e68e66623bb421e67fc62606e2f (patch)
treeb3117a0cb33e649278d9bf552bf33a40e273f0f0
parent9826ab928ad6e472630a2744731352a8f9db6489 (diff)
parent89dd1d477cb68a6fb936b97560e1f85191b50d39 (diff)
downloadlinux-crypto-0e712279ff8b5e68e66623bb421e67fc62606e2f.tar.gz
linux-crypto-0e712279ff8b5e68e66623bb421e67fc62606e2f.zip
Merge branch 'x86/urgent' into x86/mm
Conflicts: arch/x86/include/asm/fixmap_64.h Semantic merge: arch/x86/include/asm/fixmap.h Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--crypto/api.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/crypto/api.c b/crypto/api.c
index efe77df6..38a2bc02 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -215,8 +215,19 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask)
mask &= ~(CRYPTO_ALG_LARVAL | CRYPTO_ALG_DEAD);
type &= mask;
- alg = try_then_request_module(crypto_alg_lookup(name, type, mask),
- name);
+ alg = crypto_alg_lookup(name, type, mask);
+ if (!alg) {
+ char tmp[CRYPTO_MAX_ALG_NAME];
+
+ request_module(name);
+
+ if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask) &&
+ snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp))
+ request_module(tmp);
+
+ alg = crypto_alg_lookup(name, type, mask);
+ }
+
if (alg)
return crypto_is_larval(alg) ? crypto_larval_wait(alg) : alg;