diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-28 18:24:12 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-28 18:24:12 -0400 |
commit | d00ab2fdd4dc4361c97777bc1fef7234329d4659 (patch) | |
tree | b8d8f98c1af633bbc1570b4270b39727737beebf /crypto/ablkcipher.c | |
parent | 88f502fedba82eff252b6420e8b8328e4ae25c67 (diff) | |
parent | 7c730ccdc1188b97f5c8cb690906242c7ed75c22 (diff) |
Merge branch 'linus' into core/futexes
Diffstat (limited to 'crypto/ablkcipher.c')
-rw-r--r-- | crypto/ablkcipher.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c index 94140b3756fc..e11ce37c7104 100644 --- a/crypto/ablkcipher.c +++ b/crypto/ablkcipher.c | |||
@@ -282,6 +282,25 @@ static struct crypto_alg *crypto_lookup_skcipher(const char *name, u32 type, | |||
282 | alg->cra_ablkcipher.ivsize)) | 282 | alg->cra_ablkcipher.ivsize)) |
283 | return alg; | 283 | return alg; |
284 | 284 | ||
285 | crypto_mod_put(alg); | ||
286 | alg = crypto_alg_mod_lookup(name, type | CRYPTO_ALG_TESTED, | ||
287 | mask & ~CRYPTO_ALG_TESTED); | ||
288 | if (IS_ERR(alg)) | ||
289 | return alg; | ||
290 | |||
291 | if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == | ||
292 | CRYPTO_ALG_TYPE_GIVCIPHER) { | ||
293 | if ((alg->cra_flags ^ type ^ ~mask) & CRYPTO_ALG_TESTED) { | ||
294 | crypto_mod_put(alg); | ||
295 | alg = ERR_PTR(-ENOENT); | ||
296 | } | ||
297 | return alg; | ||
298 | } | ||
299 | |||
300 | BUG_ON(!((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == | ||
301 | CRYPTO_ALG_TYPE_BLKCIPHER ? alg->cra_blkcipher.ivsize : | ||
302 | alg->cra_ablkcipher.ivsize)); | ||
303 | |||
285 | return ERR_PTR(crypto_givcipher_default(alg, type, mask)); | 304 | return ERR_PTR(crypto_givcipher_default(alg, type, mask)); |
286 | } | 305 | } |
287 | 306 | ||