Since mv_hash_final_fallback() uses ctx->state, read out the digest
state register before calling it.

Signed-off-by: Phil Sutter <phil.sut...@viprinet.com>
---
 drivers/crypto/mv_cesa.c |   19 +++++++++++++------
 1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/crypto/mv_cesa.c b/drivers/crypto/mv_cesa.c
index d4763fb..3cc9237 100644
--- a/drivers/crypto/mv_cesa.c
+++ b/drivers/crypto/mv_cesa.c
@@ -421,6 +421,15 @@ out:
        return rc;
 }
 
+static void mv_save_digest_state(struct mv_req_hash_ctx *ctx)
+{
+       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);
+}
+
 static void mv_hash_algo_completion(void)
 {
        struct ahash_request *req = ahash_request_cast(cpg->cur_req);
@@ -435,14 +444,12 @@ static void mv_hash_algo_completion(void)
                        memcpy(req->result, cpg->sram + SRAM_DIGEST_BUF,
                               crypto_ahash_digestsize(crypto_ahash_reqtfm
                                                       (req)));
-               } else
+               } else {
+                       mv_save_digest_state(ctx);
                        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);
+               mv_save_digest_state(ctx);
        }
 }
 
-- 
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to