From 0a9b5fbdff2f17949b7f93bcb3908d032f97f721 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Mon, 27 Jan 2025 09:26:54 +0100 Subject: [PATCH] MT#55283 redis: cover a usage of write DB with lock Just cover it with already existing lock used below, but move upper. Fixes Covery Scan detected defect: *** CID 1621443: Concurrent data access violations (MISSING_LOCK) /daemon/redis.c: 2232 in json_restore_call() 2226 call_destroy(c); 2227 release_closed_sockets(); 2228 if (must_release_pop) // avoid deadlock with redis_notify->lock below 2229 redis_ports_release_pop(false); 2230 must_release_pop = false; 2231 >>> CID 1621443: Concurrent data access violations (MISSING_LOCK) >>> Accessing "rtpe_redis_write->db" without holding lock "redis.lock". >>> Elsewhere, "redis.db" is written to with "redis.lock" held 1 out of 1 times. 2232 redis_select_db(rtpe_redis_write, rtpe_redis_write->db); 2233 2234 mutex_lock(&rtpe_redis_write->lock); 2235 redisCommandNR(rtpe_redis_write->ctx, "DEL " PB, PBSTR(callid)); 2236 mutex_unlock(&rtpe_redis_write->lock); 2237 Change-Id: Iff3425451f82218480dcc08f42ea7bddbd6f672f (cherry picked from commit bebc6f8f31a3a8d7601858879f5af5b29328c4df) --- daemon/redis.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/daemon/redis.c b/daemon/redis.c index 44ec1af6c..c938552be 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -2229,9 +2229,10 @@ err1: redis_ports_release_pop(false); must_release_pop = false; + mutex_lock(&rtpe_redis_write->lock); + redis_select_db(rtpe_redis_write, rtpe_redis_write->db); - mutex_lock(&rtpe_redis_write->lock); redisCommandNR(rtpe_redis_write->ctx, "DEL " PB, PBSTR(callid)); mutex_unlock(&rtpe_redis_write->lock);