crypto: mv_cesa - copy remaining bytes to SRAM only when needed
authorPhil Sutter <phil.sutter@viprinet.com>
Thu, 5 May 2011 13:29:05 +0000 (15:29 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 11 May 2011 05:06:21 +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 a2d9e39..d704ed0 100644 (file)
@@ -525,12 +525,6 @@ static void mv_start_new_hash_req(struct ahash_request *req)
        hw_bytes = req->nbytes + ctx->extra_bytes;
        old_extra_bytes = ctx->extra_bytes;
 
-       if (unlikely(ctx->extra_bytes)) {
-               memcpy(cpg->sram + SRAM_DATA_IN_START, ctx->buffer,
-                      ctx->extra_bytes);
-               p->crypt_len = ctx->extra_bytes;
-       }
-
        ctx->extra_bytes = hw_bytes % SHA1_BLOCK_SIZE;
        if (ctx->extra_bytes != 0
            && (!ctx->last_chunk || ctx->count > MAX_HW_HASH_SIZE))
@@ -546,6 +540,12 @@ static void mv_start_new_hash_req(struct ahash_request *req)
                p->complete = mv_hash_algo_completion;
                p->process = mv_process_hash_current;
 
+               if (unlikely(old_extra_bytes)) {
+                       memcpy(cpg->sram + SRAM_DATA_IN_START, ctx->buffer,
+                              old_extra_bytes);
+                       p->crypt_len = old_extra_bytes;
+               }
+
                mv_process_hash_current(1);
        } else {
                copy_src_to_buf(p, ctx->buffer + old_extra_bytes,