diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-28 22:27:45 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-28 22:27:45 +0100 |
commit | fab2e030f9729c89dbcf6392f4c4a25105c9cbfa (patch) | |
tree | 0c954c437b1d5ea174af19cda413f0bbe3a60949 /crypto/ablkcipher.c | |
parent | 9a9f3c8647eaaac118d55ad74a10eef558d2a557 (diff) | |
parent | fed2c5aea5e362f1ff83b27cfd4b50d858377a5f (diff) | |
download | linux-crypto-fab2e030f9729c89dbcf6392f4c4a25105c9cbfa.tar.gz linux-crypto-fab2e030f9729c89dbcf6392f4c4a25105c9cbfa.zip |
Merge branch 'linus' into x86/core
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 94140b37..e11ce37c 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, alg->cra_ablkcipher.ivsize)) return alg; + crypto_mod_put(alg); + alg = crypto_alg_mod_lookup(name, type | CRYPTO_ALG_TESTED, + mask & ~CRYPTO_ALG_TESTED); + if (IS_ERR(alg)) + return alg; + + if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == + CRYPTO_ALG_TYPE_GIVCIPHER) { + if ((alg->cra_flags ^ type ^ ~mask) & CRYPTO_ALG_TESTED) { + crypto_mod_put(alg); + alg = ERR_PTR(-ENOENT); + } + return alg; + } + + BUG_ON(!((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == + CRYPTO_ALG_TYPE_BLKCIPHER ? alg->cra_blkcipher.ivsize : + alg->cra_ablkcipher.ivsize)); + return ERR_PTR(crypto_givcipher_default(alg, type, mask)); } |