summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGoetz Goerisch2026-05-21 12:04:17 +0000
committerHauke Mehrtens2026-05-25 22:03:34 +0000
commitbcff9902c3db5e130ccd5f66fdc5c7cfbe71f8e8 (patch)
tree004677804f3713da57cf7ea6a02e53c81780f8e3
parenta8382a4821e8b845fe15dc357a86d1a33c5bdc55 (diff)
downloadopenwrt-bcff9902c3db5e130ccd5f66fdc5c7cfbe71f8e8.tar.gz
kernel: backport crypto: talitos - stop using crypto_ahash::init
This patch is not yet backported to the 6.6.y tree. It is a prerequisite for kernel 6.6.140 to build for mpc85xx. drivers/crypto/talitos.c: In function 'ahash_digest': drivers/crypto/talitos.c:2204:16: error: 'struct talitos_ahash_req_ctx' has no member named 'last' 2204 | req_ctx->last = 1; | ^~~~~ Link: https://lore.kernel.org/all/DIOA24QU02W5.2RSVK05RE7BJK@bootlin.com/ Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com> Link: https://github.com/openwrt/openwrt/pull/23435 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--target/linux/generic/backport-6.6/911-v6.7-crypto-talitos-stop-using-crypto_ahash-init.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/target/linux/generic/backport-6.6/911-v6.7-crypto-talitos-stop-using-crypto_ahash-init.patch b/target/linux/generic/backport-6.6/911-v6.7-crypto-talitos-stop-using-crypto_ahash-init.patch
new file mode 100644
index 0000000000..6653411bba
--- /dev/null
+++ b/target/linux/generic/backport-6.6/911-v6.7-crypto-talitos-stop-using-crypto_ahash-init.patch
@@ -0,0 +1,52 @@
+From 9826d1d6ed5f86cb3d61610b3b1fe31e96a40418 Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Sun, 22 Oct 2023 01:10:57 -0700
+Subject: crypto: talitos - stop using crypto_ahash::init
+
+The function pointer crypto_ahash::init is an internal implementation
+detail of the ahash API that exists to help it support both ahash and
+shash algorithms. With an upcoming refactoring of how the ahash API
+supports shash algorithms, this field will be removed.
+
+Some drivers are invoking crypto_ahash::init to call into their own
+code, which is unnecessary and inefficient. The talitos driver is one
+of those drivers. Make it just call its own code directly.
+
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ drivers/crypto/talitos.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -2119,13 +2119,14 @@ static int ahash_finup(struct ahash_requ
+
+ static int ahash_digest(struct ahash_request *areq)
+ {
+- struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
+- struct crypto_ahash *ahash = crypto_ahash_reqtfm(areq);
+-
+- ahash->init(areq);
+- req_ctx->last = 1;
++ ahash_init(areq);
++ return ahash_finup(areq);
++}
+
+- return ahash_process_req(areq, areq->nbytes);
++static int ahash_digest_sha224_swinit(struct ahash_request *areq)
++{
++ ahash_init_sha224_swinit(areq);
++ return ahash_finup(areq);
+ }
+
+ static int ahash_export(struct ahash_request *areq, void *out)
+@@ -3242,6 +3243,8 @@ static struct talitos_crypto_alg *talito
+ (!strcmp(alg->cra_name, "sha224") ||
+ !strcmp(alg->cra_name, "hmac(sha224)"))) {
+ t_alg->algt.alg.hash.init = ahash_init_sha224_swinit;
++ t_alg->algt.alg.hash.digest =
++ ahash_digest_sha224_swinit;
+ t_alg->algt.desc_hdr_template =
+ DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
+ DESC_HDR_SEL0_MDEUA |