diff options
author | James Morris <jmorris@namei.org> | 2018-02-21 08:21:41 -0800 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2018-02-21 08:21:41 -0800 |
commit | 45ce5d915020b8c76238e123748e0eb6e9ddd6ad (patch) | |
tree | 916682ca7617ad686d2f8f9cac41ec4e9c432b00 /crypto/aead.c | |
parent | 4a06f454768a7e11e8f10b900b450786546cbba1 (diff) | |
parent | 17a3638239bb39acce5f03e779c69bc0e4a5c736 (diff) | |
download | linux-crypto-45ce5d915020b8c76238e123748e0eb6e9ddd6ad.tar.gz linux-crypto-45ce5d915020b8c76238e123748e0eb6e9ddd6ad.zip |
Merge tag 'v4.16-rc2' into next-general
Sync to Linux 4.16-rc2 for developers to work against.
Diffstat (limited to 'crypto/aead.c')
-rw-r--r-- | crypto/aead.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/crypto/aead.c b/crypto/aead.c index f794b30a..60b3bbe9 100644 --- a/crypto/aead.c +++ b/crypto/aead.c @@ -54,11 +54,18 @@ int crypto_aead_setkey(struct crypto_aead *tfm, const u8 *key, unsigned int keylen) { unsigned long alignmask = crypto_aead_alignmask(tfm); + int err; if ((unsigned long)key & alignmask) - return setkey_unaligned(tfm, key, keylen); + err = setkey_unaligned(tfm, key, keylen); + else + err = crypto_aead_alg(tfm)->setkey(tfm, key, keylen); + + if (err) + return err; - return crypto_aead_alg(tfm)->setkey(tfm, key, keylen); + crypto_aead_clear_flags(tfm, CRYPTO_TFM_NEED_KEY); + return 0; } EXPORT_SYMBOL_GPL(crypto_aead_setkey); @@ -93,6 +100,8 @@ static int crypto_aead_init_tfm(struct crypto_tfm *tfm) struct crypto_aead *aead = __crypto_aead_cast(tfm); struct aead_alg *alg = crypto_aead_alg(aead); + crypto_aead_set_flags(aead, CRYPTO_TFM_NEED_KEY); + aead->authsize = alg->maxauthsize; if (alg->exit) @@ -295,7 +304,7 @@ int aead_init_geniv(struct crypto_aead *aead) if (err) goto out; - ctx->sknull = crypto_get_default_null_skcipher2(); + ctx->sknull = crypto_get_default_null_skcipher(); err = PTR_ERR(ctx->sknull); if (IS_ERR(ctx->sknull)) goto out; @@ -315,7 +324,7 @@ out: return err; drop_null: - crypto_put_default_null_skcipher2(); + crypto_put_default_null_skcipher(); goto out; } EXPORT_SYMBOL_GPL(aead_init_geniv); @@ -325,7 +334,7 @@ void aead_exit_geniv(struct crypto_aead *tfm) struct aead_geniv_ctx *ctx = crypto_aead_ctx(tfm); crypto_free_aead(ctx->child); - crypto_put_default_null_skcipher2(); + crypto_put_default_null_skcipher(); } EXPORT_SYMBOL_GPL(aead_exit_geniv); |