crypto: ccree - simplify AEAD ICV addr calculation
authorGilad Ben-Yossef <gilad@benyossef.com>
Thu, 18 Apr 2019 13:38:58 +0000 (16:38 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 25 Apr 2019 07:38:15 +0000 (15:38 +0800)
The function cc_prepare_aead_data_dlli() which calculates ICV addresses
was needlessly complicate it. This patch simplifies it without altering
its functionality.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccree/cc_buffer_mgr.c

index 8269474cb9fadd1a5cf3fdecd9b861f2484ec796..8554cfb2963ad8615e5932f51426b668727f200f 100644 (file)
@@ -749,27 +749,21 @@ static void cc_prepare_aead_data_dlli(struct aead_request *req,
        struct aead_req_ctx *areq_ctx = aead_request_ctx(req);
        enum drv_crypto_direction direct = areq_ctx->gen_ctx.op_type;
        unsigned int authsize = areq_ctx->req_authsize;
+       struct scatterlist *sg;
+       ssize_t offset;
 
        areq_ctx->is_icv_fragmented = false;
-       if (req->src == req->dst) {
-               /*INPLACE*/
-               areq_ctx->icv_dma_addr = sg_dma_address(areq_ctx->src_sgl) +
-                       (*src_last_bytes - authsize);
-               areq_ctx->icv_virt_addr = sg_virt(areq_ctx->src_sgl) +
-                       (*src_last_bytes - authsize);
-       } else if (direct == DRV_CRYPTO_DIRECTION_DECRYPT) {
-               /*NON-INPLACE and DECRYPT*/
-               areq_ctx->icv_dma_addr = sg_dma_address(areq_ctx->src_sgl) +
-                       (*src_last_bytes - authsize);
-               areq_ctx->icv_virt_addr = sg_virt(areq_ctx->src_sgl) +
-                       (*src_last_bytes - authsize);
+
+       if ((req->src == req->dst) || direct == DRV_CRYPTO_DIRECTION_DECRYPT) {
+               sg = areq_ctx->src_sgl;
+               offset = *src_last_bytes - authsize;
        } else {
-               /*NON-INPLACE and ENCRYPT*/
-               areq_ctx->icv_dma_addr = sg_dma_address(areq_ctx->dst_sgl) +
-                       (*dst_last_bytes - authsize);
-               areq_ctx->icv_virt_addr = sg_virt(areq_ctx->dst_sgl) +
-                       (*dst_last_bytes - authsize);
+               sg = areq_ctx->dst_sgl;
+               offset = *dst_last_bytes - authsize;
        }
+
+       areq_ctx->icv_dma_addr = sg_dma_address(sg) + offset;
+       areq_ctx->icv_virt_addr = sg_virt(sg) + offset;
 }
 
 static void cc_prepare_aead_data_mlli(struct cc_drvdata *drvdata,