crypto: chelsio - count incomplete block in IV
authorAtul Gupta <atul.gupta@chelsio.com>
Thu, 2 May 2019 10:47:57 +0000 (03:47 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 9 May 2019 05:17:23 +0000 (13:17 +0800)
The partial block should count as one and appropriately appended
to IV. eg 499B for AES CTR should count 32 block than 31 and
correct count value is updated in iv out.

Signed-off-by: Atul Gupta <atul.gupta@chelsio.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/chelsio/chcr_algo.c

index 73bbd499b6ff3611038320f9169ac6ae9677e878..177f572b95890c842a574a69fabfd40ddb2c33c9 100644 (file)
@@ -1094,8 +1094,8 @@ static int chcr_final_cipher_iv(struct ablkcipher_request *req,
        int ret = 0;
 
        if (subtype == CRYPTO_ALG_SUB_TYPE_CTR)
-               ctr_add_iv(iv, req->info, (reqctx->processed /
-                          AES_BLOCK_SIZE));
+               ctr_add_iv(iv, req->info, DIV_ROUND_UP(reqctx->processed,
+                                                      AES_BLOCK_SIZE));
        else if (subtype == CRYPTO_ALG_SUB_TYPE_XTS)
                ret = chcr_update_tweak(req, iv, 1);
        else if (subtype == CRYPTO_ALG_SUB_TYPE_CBC) {