mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-15 22:21:57 -06:00
cryptodev: Fix error handling in cryptodev_lkcf_execute_task()
When cryptodev_lkcf_set_op_desc() fails, we report an error, but continue anyway. This is wrong. We then pass a non-null @local_error to various functions, which could easily fail error_setv()'s assertion on failure. Fail the function instead. When qcrypto_akcipher_new() fails, we fail the function without reporting the error. This leaks the Error object. Add the missing error reporting. This also frees the Error object. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20250312101131.1615777-1-armbru@redhat.com> Reviewed-by: zhenwei pi <pizhenwei@bytedance.com>
This commit is contained in:
parent
1dae461a91
commit
1c89dfefc4
1 changed files with 3 additions and 0 deletions
|
@ -330,6 +330,8 @@ static void cryptodev_lkcf_execute_task(CryptoDevLKCFTask *task)
|
||||||
cryptodev_lkcf_set_op_desc(&session->akcipher_opts, op_desc,
|
cryptodev_lkcf_set_op_desc(&session->akcipher_opts, op_desc,
|
||||||
sizeof(op_desc), &local_error) != 0) {
|
sizeof(op_desc), &local_error) != 0) {
|
||||||
error_report_err(local_error);
|
error_report_err(local_error);
|
||||||
|
status = -VIRTIO_CRYPTO_ERR;
|
||||||
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
key_id = add_key(KCTL_KEY_TYPE_PKEY, "lkcf-backend-priv-key",
|
key_id = add_key(KCTL_KEY_TYPE_PKEY, "lkcf-backend-priv-key",
|
||||||
p8info, p8info_len, KCTL_KEY_RING);
|
p8info, p8info_len, KCTL_KEY_RING);
|
||||||
|
@ -346,6 +348,7 @@ static void cryptodev_lkcf_execute_task(CryptoDevLKCFTask *task)
|
||||||
session->key, session->keylen,
|
session->key, session->keylen,
|
||||||
&local_error);
|
&local_error);
|
||||||
if (!akcipher) {
|
if (!akcipher) {
|
||||||
|
error_report_err(local_error);
|
||||||
status = -VIRTIO_CRYPTO_ERR;
|
status = -VIRTIO_CRYPTO_ERR;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue