summaryrefslogtreecommitdiff
path: root/drivers/crypto/padlock-sha.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2025-04-12 18:47:40 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2025-04-16 15:36:24 +0800
commit34f442a3a08aec3bd993dda89c0fdc8447ce4fee (patch)
tree92600174cfe85dace55fe06e490eddc847d2f358 /drivers/crypto/padlock-sha.c
parentf1440a90465bea1993f937ac7add592ce1e4ff44 (diff)
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 <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/padlock-sha.c')
-rw-r--r--drivers/crypto/padlock-sha.c14
1 files 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",