]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - crypto/ahash.c
Merge tag 'mips_4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
[linux.git] / crypto / ahash.c
index a64c143165b1fb3ce048b0de8f59ef5bacea077d..e21667b4e10ac50ca9873adebeea72cc79412f7c 100644 (file)
@@ -364,24 +364,35 @@ static int crypto_ahash_op(struct ahash_request *req,
 
 int crypto_ahash_final(struct ahash_request *req)
 {
-       return crypto_ahash_op(req, crypto_ahash_reqtfm(req)->final);
+       int ret;
+
+       ret = crypto_ahash_op(req, crypto_ahash_reqtfm(req)->final);
+       crypto_stat_ahash_final(req, ret);
+       return ret;
 }
 EXPORT_SYMBOL_GPL(crypto_ahash_final);
 
 int crypto_ahash_finup(struct ahash_request *req)
 {
-       return crypto_ahash_op(req, crypto_ahash_reqtfm(req)->finup);
+       int ret;
+
+       ret = crypto_ahash_op(req, crypto_ahash_reqtfm(req)->finup);
+       crypto_stat_ahash_final(req, ret);
+       return ret;
 }
 EXPORT_SYMBOL_GPL(crypto_ahash_finup);
 
 int crypto_ahash_digest(struct ahash_request *req)
 {
        struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
+       int ret;
 
        if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
-               return -ENOKEY;
-
-       return crypto_ahash_op(req, tfm->digest);
+               ret = -ENOKEY;
+       else
+               ret = crypto_ahash_op(req, tfm->digest);
+       crypto_stat_ahash_final(req, ret);
+       return ret;
 }
 EXPORT_SYMBOL_GPL(crypto_ahash_digest);
 
@@ -550,8 +561,8 @@ static int ahash_prepare_alg(struct ahash_alg *alg)
 {
        struct crypto_alg *base = &alg->halg.base;
 
-       if (alg->halg.digestsize > PAGE_SIZE / 8 ||
-           alg->halg.statesize > PAGE_SIZE / 8 ||
+       if (alg->halg.digestsize > HASH_MAX_DIGESTSIZE ||
+           alg->halg.statesize > HASH_MAX_STATESIZE ||
            alg->halg.statesize == 0)
                return -EINVAL;