Messages in this thread Patch in this message | | | From | Vincent Whitchurch <> | Subject | [PATCH 06/12] crypto: axis - reject invalid sizes | Date | Tue, 10 Jan 2023 14:50:36 +0100 |
| |
Reject invalid sizes in block ciphers to fix hangs in CRYPTO_MANAGER_EXTRA_TESTS like this:
artpec6-ecb-aes "random: len=55 klen=32" decryption random: inplace_one_sglist use_final nosimd src_divs=[<reimport>87.4%@+1524, <flush>12.96%@+3553] key_offset=84
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com> --- drivers/crypto/axis/artpec6_crypto.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c index 0ffe6e0045aa..78d067ce4138 100644 --- a/drivers/crypto/axis/artpec6_crypto.c +++ b/drivers/crypto/axis/artpec6_crypto.c @@ -1188,6 +1188,22 @@ static int artpec6_crypto_decrypt(struct skcipher_request *req) return artpec6_crypto_submit(&req_ctx->common); } +static int artpec6_crypto_block_encrypt(struct skcipher_request *req) +{ + if (!IS_ALIGNED(req->cryptlen, AES_BLOCK_SIZE)) + return -EINVAL; + + return artpec6_crypto_encrypt(req); +} + +static int artpec6_crypto_block_decrypt(struct skcipher_request *req) +{ + if (!IS_ALIGNED(req->cryptlen, AES_BLOCK_SIZE)) + return -EINVAL; + + return artpec6_crypto_decrypt(req); +} + static int artpec6_crypto_ctr_crypt(struct skcipher_request *req, bool encrypt) { @@ -2757,8 +2773,8 @@ static struct skcipher_alg crypto_algos[] = { .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, .setkey = artpec6_crypto_cipher_set_key, - .encrypt = artpec6_crypto_encrypt, - .decrypt = artpec6_crypto_decrypt, + .encrypt = artpec6_crypto_block_encrypt, + .decrypt = artpec6_crypto_block_decrypt, .init = artpec6_crypto_aes_ecb_init, .exit = artpec6_crypto_aes_exit, }, @@ -2802,8 +2818,8 @@ static struct skcipher_alg crypto_algos[] = { .max_keysize = AES_MAX_KEY_SIZE, .ivsize = AES_BLOCK_SIZE, .setkey = artpec6_crypto_cipher_set_key, - .encrypt = artpec6_crypto_encrypt, - .decrypt = artpec6_crypto_decrypt, + .encrypt = artpec6_crypto_block_encrypt, + .decrypt = artpec6_crypto_block_decrypt, .init = artpec6_crypto_aes_cbc_init, .exit = artpec6_crypto_aes_exit }, -- 2.34.1
| |