crypto: mv_cesa - no need to save digest state after the last chunk
authorPhil Sutter <phil.sutter@viprinet.com>
Thu, 5 May 2011 13:29:01 +0000 (15:29 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 11 May 2011 05:06:17 +0000 (15:06 +1000)
Signed-off-by: Phil Sutter <phil.sutter@viprinet.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/mv_cesa.c

index c018cd0..fb3f1e3 100644 (file)
@@ -407,12 +407,6 @@ static void mv_hash_algo_completion(void)
                copy_src_to_buf(&cpg->p, ctx->buffer, ctx->extra_bytes);
        sg_miter_stop(&cpg->p.src_sg_it);
 
-       ctx->state[0] = readl(cpg->reg + DIGEST_INITIAL_VAL_A);
-       ctx->state[1] = readl(cpg->reg + DIGEST_INITIAL_VAL_B);
-       ctx->state[2] = readl(cpg->reg + DIGEST_INITIAL_VAL_C);
-       ctx->state[3] = readl(cpg->reg + DIGEST_INITIAL_VAL_D);
-       ctx->state[4] = readl(cpg->reg + DIGEST_INITIAL_VAL_E);
-
        if (likely(ctx->last_chunk)) {
                if (likely(ctx->count <= MAX_HW_HASH_SIZE)) {
                        memcpy(req->result, cpg->sram + SRAM_DIGEST_BUF,
@@ -420,6 +414,12 @@ static void mv_hash_algo_completion(void)
                                                       (req)));
                } else
                        mv_hash_final_fallback(req);
+       } else {
+               ctx->state[0] = readl(cpg->reg + DIGEST_INITIAL_VAL_A);
+               ctx->state[1] = readl(cpg->reg + DIGEST_INITIAL_VAL_B);
+               ctx->state[2] = readl(cpg->reg + DIGEST_INITIAL_VAL_C);
+               ctx->state[3] = readl(cpg->reg + DIGEST_INITIAL_VAL_D);
+               ctx->state[4] = readl(cpg->reg + DIGEST_INITIAL_VAL_E);
        }
 }