From 34f442a3a08aec3bd993dda89c0fdc8447ce4fee Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sat, 12 Apr 2025 18:47:40 +0800 Subject: [PATCH] crypto: padlock-sha - Make descsize an algorithm attribute Rather than setting descsize in init_tfm, set it statically and double-check it in init_tfm. Signed-off-by: Herbert Xu --- drivers/crypto/padlock-sha.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c index db9e84c0c9fb..466493907d48 100644 --- a/drivers/crypto/padlock-sha.c +++ b/drivers/crypto/padlock-sha.c @@ -206,8 +206,14 @@ static int padlock_init_tfm(struct crypto_shash *hash) return PTR_ERR(fallback_tfm); } + if (crypto_shash_descsize(hash) < sizeof(struct padlock_sha_desc) + + crypto_shash_descsize(fallback_tfm)) { + crypto_free_shash(fallback_tfm); + return -EINVAL; + } + ctx->fallback = fallback_tfm; - hash->descsize += crypto_shash_descsize(fallback_tfm); + return 0; } @@ -228,7 +234,8 @@ static struct shash_alg sha1_alg = { .import = padlock_sha_import, .init_tfm = padlock_init_tfm, .exit_tfm = padlock_exit_tfm, - .descsize = sizeof(struct padlock_sha_desc), + .descsize = sizeof(struct padlock_sha_desc) + + sizeof(struct sha1_state), .statesize = sizeof(struct sha1_state), .base = { .cra_name = "sha1", @@ -251,7 +258,8 @@ static struct shash_alg sha256_alg = { .import = padlock_sha_import, .init_tfm = padlock_init_tfm, .exit_tfm = padlock_exit_tfm, - .descsize = sizeof(struct padlock_sha_desc), + .descsize = sizeof(struct padlock_sha_desc) + + sizeof(struct sha256_state), .statesize = sizeof(struct sha256_state), .base = { .cra_name = "sha256", -- 2.50.1