Merge tag 'for-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power...
[sfrench/cifs-2.6.git] / crypto / aead.c
index 9b18a1e40d6af896be358c72113cbddb78c7acaa..3f5c5ff004abc2a8e8c6739f93cbdab9c88c37c5 100644 (file)
@@ -294,9 +294,9 @@ int aead_init_geniv(struct crypto_aead *aead)
        if (err)
                goto out;
 
-       ctx->null = crypto_get_default_null_skcipher();
-       err = PTR_ERR(ctx->null);
-       if (IS_ERR(ctx->null))
+       ctx->sknull = crypto_get_default_null_skcipher2();
+       err = PTR_ERR(ctx->sknull);
+       if (IS_ERR(ctx->sknull))
                goto out;
 
        child = crypto_spawn_aead(aead_instance_ctx(inst));
@@ -314,7 +314,7 @@ out:
        return err;
 
 drop_null:
-       crypto_put_default_null_skcipher();
+       crypto_put_default_null_skcipher2();
        goto out;
 }
 EXPORT_SYMBOL_GPL(aead_init_geniv);
@@ -324,7 +324,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_skcipher();
+       crypto_put_default_null_skcipher2();
 }
 EXPORT_SYMBOL_GPL(aead_exit_geniv);
 
@@ -346,9 +346,13 @@ static int aead_prepare_alg(struct aead_alg *alg)
 {
        struct crypto_alg *base = &alg->base;
 
-       if (max(alg->maxauthsize, alg->ivsize) > PAGE_SIZE / 8)
+       if (max3(alg->maxauthsize, alg->ivsize, alg->chunksize) >
+           PAGE_SIZE / 8)
                return -EINVAL;
 
+       if (!alg->chunksize)
+               alg->chunksize = base->cra_blocksize;
+
        base->cra_type = &crypto_aead_type;
        base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK;
        base->cra_flags |= CRYPTO_ALG_TYPE_AEAD;