crypto: talitos - simplify hmac data size calculation
authorKim Phillips <kim.phillips@freescale.com>
Thu, 13 Aug 2009 01:49:06 +0000 (11:49 +1000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 13 Aug 2009 01:49:06 +0000 (11:49 +1000)
don't do request->src vs. assoc pointer math - it's the same as adding
assoclen and ivsize (just with more effort).

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/talitos.c

index c70775fd3ce2266b3b2805b8c1cb440217a55b6f..b1a651c61829a757effc6988b81f0eca94dff2d0 100644 (file)
@@ -970,7 +970,7 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
        struct talitos_desc *desc = &edesc->desc;
        unsigned int cryptlen = areq->cryptlen;
        unsigned int authsize = ctx->authsize;
-       unsigned int ivsize;
+       unsigned int ivsize = crypto_aead_ivsize(aead);
        int sg_count, ret;
        int sg_link_tbl_len;
 
@@ -978,11 +978,9 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
        map_single_talitos_ptr(dev, &desc->ptr[0], ctx->authkeylen, &ctx->key,
                               0, DMA_TO_DEVICE);
        /* hmac data */
-       map_single_talitos_ptr(dev, &desc->ptr[1], sg_virt(areq->src) -
-                              sg_virt(areq->assoc), sg_virt(areq->assoc), 0,
-                              DMA_TO_DEVICE);
+       map_single_talitos_ptr(dev, &desc->ptr[1], areq->assoclen + ivsize,
+                              sg_virt(areq->assoc), 0, DMA_TO_DEVICE);
        /* cipher iv */
-       ivsize = crypto_aead_ivsize(aead);
        map_single_talitos_ptr(dev, &desc->ptr[2], ivsize, giv ?: areq->iv, 0,
                               DMA_TO_DEVICE);