From eb3f1f686e120f8686293466becd59e454e1e0a3 Mon Sep 17 00:00:00 2001 From: Lin Jinhan Date: Tue, 1 Dec 2020 12:38:00 +0800 Subject: [PATCH] crypto: rockchip: fix bug on iv update 1. rk_iv_copyback use dev->count as real data length. 2. drop rk_update_iv Change-Id: I14266a5872c125acea2cec9c6fb10e18ea9c4470 Signed-off-by: Lin Jinhan --- .../crypto/rockchip/rk_crypto_v2_ablkcipher.c | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/drivers/crypto/rockchip/rk_crypto_v2_ablkcipher.c b/drivers/crypto/rockchip/rk_crypto_v2_ablkcipher.c index 9e5034b1a73b..72f29dfa2fb8 100644 --- a/drivers/crypto/rockchip/rk_crypto_v2_ablkcipher.c +++ b/drivers/crypto/rockchip/rk_crypto_v2_ablkcipher.c @@ -441,7 +441,7 @@ static void rk_iv_copyback(struct rk_crypto_info *dev) if (!IS_BC_DECRYPT(ctx->mode)) { if (dev->aligned) { memcpy(req->info, sg_virt(dev->sg_dst) + - dev->sg_dst->length - ivsize, ivsize); + dev->count - ivsize, ivsize); } else { memcpy(req->info, dev->addr_vir + dev->count - ivsize, ivsize); @@ -450,25 +450,6 @@ static void rk_iv_copyback(struct rk_crypto_info *dev) } -static void rk_update_iv(struct rk_crypto_info *dev) -{ - struct ablkcipher_request *req = - ablkcipher_request_cast(dev->async_req); - struct crypto_ablkcipher *tfm = crypto_ablkcipher_reqtfm(req); - struct rk_cipher_ctx *ctx = crypto_ablkcipher_ctx(tfm); - u32 ivsize = crypto_ablkcipher_ivsize(tfm); - u8 *new_iv = NULL; - - if (IS_BC_DECRYPT(ctx->mode)) { - new_iv = ctx->iv; - } else { - new_iv = page_address(sg_page(dev->sg_dst)) + - dev->sg_dst->offset + dev->sg_dst->length - ivsize; - } - - set_iv_reg(dev, new_iv, ivsize); -} - /* return: * true some err was occurred * fault no err, continue @@ -490,7 +471,6 @@ static int rk_ablk_rx(struct rk_crypto_info *dev) } } if (dev->left_bytes) { - rk_update_iv(dev); if (dev->aligned) { if (sg_is_last(dev->sg_src)) { dev_err(dev->dev, "[%s:%d] Lack of data\n",