crypto: sun8i-ss - do not zeroize all pad
authorCorentin Labbe <clabbe@baylibre.com>
Mon, 2 May 2022 20:19:20 +0000 (20:19 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 May 2022 09:24:19 +0000 (17:24 +0800)
Instead of memset all pad buffer, it is faster to only put 0 where
needed.

Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c

index 9582ac4..53e5bfb 100644 (file)
@@ -319,7 +319,7 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
        unsigned int len;
        u64 fill, min_fill, byte_count;
        void *pad, *result;
-       int j, i, todo;
+       int j, i, k, todo;
        __be64 *bebits;
        __le64 *lebits;
        dma_addr_t addr_res, addr_pad;
@@ -334,7 +334,6 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
 
        result = ss->flows[rctx->flow].result;
        pad = ss->flows[rctx->flow].pad;
-       memset(pad, 0, algt->alg.hash.halg.base.cra_blocksize * 2);
        bf = (__le32 *)pad;
 
        for (i = 0; i < MAX_SG; i++) {
@@ -395,7 +394,10 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
        if (fill < min_fill)
                fill += 64;
 
+       k = j;
        j += (fill - min_fill) / sizeof(u32);
+       for (; k < j; k++)
+               bf[k] = 0;
 
        switch (algt->ss_algo_id) {
        case SS_ID_HASH_MD5: