diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-04 11:14:47 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-04 11:14:47 +0100 |
commit | a1be621dfacbef0fd374d8acd553d71e07bf29ac (patch) | |
tree | 32b0355454b43b1098b5e01dd699fd7281abf781 /crypto | |
parent | 3612fdf780e28b10323dd12d2b0f306c7ada4d4c (diff) | |
parent | fec6c6fec3e20637bee5d276fb61dd8b49a3f9cc (diff) | |
download | talos-op-linux-a1be621dfacbef0fd374d8acd553d71e07bf29ac.tar.gz talos-op-linux-a1be621dfacbef0fd374d8acd553d71e07bf29ac.zip |
Merge branch 'tracing/ftrace'; commit 'v2.6.29-rc7' into tracing/core
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/api.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/crypto/api.c b/crypto/api.c index efe77df6863f..38a2bc02a98c 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; |