From 29d6c43a3ffaa886611bbdab86e8c39ba84a2dd7 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 19:05:04 +0300 Subject: [PATCH] [libesl] Coverity 1589045 Check of thread-shared field evades lock acquisition --- libs/esl/src/esl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index f39bda83b1..6f085e26db 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1167,13 +1167,6 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) esl_event_safe_destroy(&handle->last_ievent); esl_event_safe_destroy(&handle->info_event); - if (mutex) { - esl_mutex_unlock(mutex); - esl_mutex_lock(mutex); - esl_mutex_unlock(mutex); - esl_mutex_destroy(&mutex); - } - if (handle->packet_buf) { esl_buffer_destroy(&handle->packet_buf); } @@ -1181,6 +1174,13 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) memset(handle, 0, sizeof(*handle)); handle->destroyed = 1; + if (mutex) { + esl_mutex_unlock(mutex); + esl_mutex_lock(mutex); + esl_mutex_unlock(mutex); + esl_mutex_destroy(&mutex); + } + return status; }