crypto: virtio - deal with unsupported input sizes
[ Upstream commit 19c5da7d4a2662e85ea67d2d81df57e038fde3ab ] Return -EINVAL for input sizes that are not a multiple of the AES block size, since they are not supported by our CBC chaining mode. While at it, remove the pr_err() that reports unsupported key sizes being used: we shouldn't spam the kernel log with that. Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver") Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Jason Wang <jasowang@redhat.com> Cc: Gonglei <arei.gonglei@huawei.com> Cc: virtualization@lists.linux-foundation.org Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
c4fd0e76e4
commit
50806c4aa2
@ -110,8 +110,6 @@ virtio_crypto_alg_validate_key(int key_len, uint32_t *alg)
|
||||
*alg = VIRTIO_CRYPTO_CIPHER_AES_CBC;
|
||||
break;
|
||||
default:
|
||||
pr_err("virtio_crypto: Unsupported key length: %d\n",
|
||||
key_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
@ -485,6 +483,11 @@ static int virtio_crypto_ablkcipher_encrypt(struct ablkcipher_request *req)
|
||||
/* Use the first data virtqueue as default */
|
||||
struct data_queue *data_vq = &vcrypto->data_vq[0];
|
||||
|
||||
if (!req->nbytes)
|
||||
return 0;
|
||||
if (req->nbytes % AES_BLOCK_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
vc_req->dataq = data_vq;
|
||||
vc_req->alg_cb = virtio_crypto_dataq_sym_callback;
|
||||
vc_sym_req->ablkcipher_ctx = ctx;
|
||||
@ -505,6 +508,11 @@ static int virtio_crypto_ablkcipher_decrypt(struct ablkcipher_request *req)
|
||||
/* Use the first data virtqueue as default */
|
||||
struct data_queue *data_vq = &vcrypto->data_vq[0];
|
||||
|
||||
if (!req->nbytes)
|
||||
return 0;
|
||||
if (req->nbytes % AES_BLOCK_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
vc_req->dataq = data_vq;
|
||||
vc_req->alg_cb = virtio_crypto_dataq_sym_callback;
|
||||
vc_sym_req->ablkcipher_ctx = ctx;
|
||||
|
Loading…
x
Reference in New Issue
Block a user