From efa698bed82f27e403537b7ecf82743e696d17ef Mon Sep 17 00:00:00 2001 From: Akhil R Date: Thu, 13 Mar 2025 20:56:41 -0800 Subject: [PATCH] crypto: tegra: Do not use IV for AES ECB It may happen that the variable req->iv may have stale values or zero sized buffer by default and may end up getting used during encryption/decryption. This in turn may corrupt the results or break the operation. Ensure not use IV for algorithms like AES ECB where IV is not expected. Bug 4883011 Change-Id: I309ad26f99fe54005ff71b270b3b115dc62ac168 Signed-off-by: Akhil R Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3319062 (cherry picked from commit 4b72ba2c8397adc4ddf71505509b9e15dc28748a) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3322768 Tested-by: Brad Griffis Reviewed-by: Jon Hunter Reviewed-by: svcacv GVS: buildbot_gerritrpt Reviewed-by: Brad Griffis --- drivers/crypto/tegra/tegra-se-aes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/tegra/tegra-se-aes.c b/drivers/crypto/tegra/tegra-se-aes.c index 6ad93577..0cd38454 100644 --- a/drivers/crypto/tegra/tegra-se-aes.c +++ b/drivers/crypto/tegra/tegra-se-aes.c @@ -289,7 +289,7 @@ static int tegra_aes_do_one_req(struct crypto_engine *engine, void *areq) if (!rctx->datbuf.buf) return -ENOMEM; - rctx->iv = (u32 *)req->iv; + rctx->iv = (ctx->alg == SE_ALG_ECB) ? NULL : (u32 *)req->iv; rctx->len = req->cryptlen; key1_id = ctx->key1_id; key2_id = ctx->key2_id;