diff options
| author | Herbert Xu <herbert@gondor.apana.org.au> | 2025-04-12 18:47:40 +0800 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2025-04-16 15:36:24 +0800 |
| commit | 34f442a3a08aec3bd993dda89c0fdc8447ce4fee (patch) | |
| tree | 92600174cfe85dace55fe06e490eddc847d2f358 /drivers/crypto/padlock-sha.c | |
| parent | f1440a90465bea1993f937ac7add592ce1e4ff44 (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.c | 14 |
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", |
