cryptodev: Fix cryptodev_builtin_cleanup() error API violation
The Error ** argument must be NULL, &error_abort, &error_fatal, or a pointer to a variable containing NULL. Passing an argument of the latter kind twice without clearing it in between is wrong: if the first call sets an error, it no longer points to NULL for the second call. cryptodev_builtin_cleanup() passes @errp to cryptodev_builtin_sym_close_session() in a loop. Harmless, because cryptodev_builtin_sym_close_session() can't actually fail. Fix it anyway. Cc: Gonglei <arei.gonglei@huawei.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200422130719.28225-2-armbru@redhat.com>
This commit is contained in:
parent
f62514b3de
commit
2a340b67bd
@ -282,12 +282,7 @@ static int cryptodev_builtin_sym_close_session(
|
|||||||
CryptoDevBackendBuiltin *builtin =
|
CryptoDevBackendBuiltin *builtin =
|
||||||
CRYPTODEV_BACKEND_BUILTIN(backend);
|
CRYPTODEV_BACKEND_BUILTIN(backend);
|
||||||
|
|
||||||
if (session_id >= MAX_NUM_SESSIONS ||
|
assert(session_id < MAX_NUM_SESSIONS && builtin->sessions[session_id]);
|
||||||
builtin->sessions[session_id] == NULL) {
|
|
||||||
error_setg(errp, "Cannot find a valid session id: %" PRIu64 "",
|
|
||||||
session_id);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
qcrypto_cipher_free(builtin->sessions[session_id]->cipher);
|
qcrypto_cipher_free(builtin->sessions[session_id]->cipher);
|
||||||
g_free(builtin->sessions[session_id]);
|
g_free(builtin->sessions[session_id]);
|
||||||
@ -356,8 +351,7 @@ static void cryptodev_builtin_cleanup(
|
|||||||
|
|
||||||
for (i = 0; i < MAX_NUM_SESSIONS; i++) {
|
for (i = 0; i < MAX_NUM_SESSIONS; i++) {
|
||||||
if (builtin->sessions[i] != NULL) {
|
if (builtin->sessions[i] != NULL) {
|
||||||
cryptodev_builtin_sym_close_session(
|
cryptodev_builtin_sym_close_session(backend, i, 0, &error_abort);
|
||||||
backend, i, 0, errp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user