diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2025-04-12 18:47:42 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2025-04-16 15:36:24 +0800 |
commit | c1dd353d18e53b39dffe5d8fce948f959ac73bbc (patch) | |
tree | ca802ef0189dcae5f2889b4275439b148a60640c | |
parent | 34f442a3a08aec3bd993dda89c0fdc8447ce4fee (diff) |
crypto: zynqmp-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>
-rw-r--r-- | drivers/crypto/xilinx/zynqmp-sha.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/crypto/xilinx/zynqmp-sha.c b/drivers/crypto/xilinx/zynqmp-sha.c index 580649f9bff8..f66e0a4c1169 100644 --- a/drivers/crypto/xilinx/zynqmp-sha.c +++ b/drivers/crypto/xilinx/zynqmp-sha.c @@ -60,8 +60,14 @@ static int zynqmp_sha_init_tfm(struct crypto_shash *hash) if (IS_ERR(fallback_tfm)) return PTR_ERR(fallback_tfm); + if (crypto_shash_descsize(hash) < + sizeof(struct zynqmp_sha_desc_ctx) + + crypto_shash_descsize(tfm_ctx->fbk_tfm)) { + crypto_free_shash(fallback_tfm); + return -EINVAL; + } + tfm_ctx->fbk_tfm = fallback_tfm; - hash->descsize += crypto_shash_descsize(tfm_ctx->fbk_tfm); return 0; } @@ -170,7 +176,8 @@ static struct zynqmp_sha_drv_ctx sha3_drv_ctx = { .import = zynqmp_sha_import, .init_tfm = zynqmp_sha_init_tfm, .exit_tfm = zynqmp_sha_exit_tfm, - .descsize = sizeof(struct zynqmp_sha_desc_ctx), + .descsize = sizeof(struct zynqmp_sha_desc_ctx) + + sizeof(struct sha3_state), .statesize = sizeof(struct sha3_state), .digestsize = SHA3_384_DIGEST_SIZE, .base = { |