mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Wentao Liang <vulab@iscas.ac.cn>
To: schalla@marvell.com, bbhushan2@marvell.com, herbert@gondor.apana.org.au
Cc: davem@davemloft.net, linux-crypto@vger.kernel.org,
	linux-kernel@vger.kernel.org, Wentao Liang <vulab@iscas.ac.cn>,
	stable@vger.kernel.org
Subject: [PATCH] crypto: octeontx2 - Unwind allocations when AEAD initialization fails
Date: Tue,  3 Nov 2026 06:42:48 +0000	[thread overview]
Message-ID: <20261103064248.1054181-1-vulab@iscas.ac.cn> (raw)

cpt_aead_init() allocates a hash transform, descriptor and pads before
looking up a CPT device and initializing the hardware context. Failures
in those later steps return without freeing the earlier allocations.
If fallback allocation fails, the hardware context is also left mapped
and allocated. The algorithm exit callback does not run after a failed
initialization.

Release the hardware context when fallback initialization fails and free
the hash resources on all three failure paths.

Fixes: 6f03f0e8b6c8 ("crypto: octeontx2 - register with linux crypto framework")
Fixes: e92971117c2c ("crypto: octeontx2 - add ctx_val workaround")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 .../crypto/marvell/octeontx2/otx2_cptvf_algs.c   | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
index 9eb5dc0a4da6..8d74e0274fdf 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
@@ -671,14 +671,24 @@ static int cpt_aead_init(struct crypto_aead *atfm, u8 cipher_type, u8 mac_type)
 
 	ret = get_se_device(&pdev, &cpu_num);
 	if (ret)
-		return ret;
+		goto err_free_hash;
 
 	ctx->pdev = pdev;
 	ret = cn10k_cpt_hw_ctx_init(pdev, &ctx->er_ctx);
 	if (ret)
-		return ret;
+		goto err_free_hash;
 
-	return cpt_aead_fallback_init(ctx, alg);
+	ret = cpt_aead_fallback_init(ctx, alg);
+	if (!ret)
+		return 0;
+
+	cn10k_cpt_hw_ctx_clear(pdev, &ctx->er_ctx);
+err_free_hash:
+	kfree(ctx->opad);
+	kfree(ctx->ipad);
+	kfree(ctx->sdesc);
+	crypto_free_shash(ctx->hashalg);
+	return ret;
 }
 
 static int otx2_cpt_aead_cbc_aes_sha1_init(struct crypto_aead *tfm)
-- 
2.34.1


             reply	other threads:[~2026-11-03  6:42 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-03  6:42 Wentao Liang [this message]
2026-11-03  7:10 ` Krzysztof Kozlowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261103064248.1054181-1-vulab@iscas.ac.cn \
    --to=vulab@iscas.ac.cn \
    --cc=bbhushan2@marvell.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schalla@marvell.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®