From e16f28a76dbf912c0466cac1cfa55d4dc3c56266 Mon Sep 17 00:00:00 2001 From: Jianxin Xiong Date: Thu, 18 Jan 2024 16:14:59 -0800 Subject: [PATCH] util: Fix coverity issue about missing lock All write accesses to `wait->signal` are protected by the lock. The read access should be protected, too. Signed-off-by: Jianxin Xiong --- prov/util/src/util_wait.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/prov/util/src/util_wait.c b/prov/util/src/util_wait.c index f2b2361b3a7..3bc0bc0d6fd 100644 --- a/prov/util/src/util_wait.c +++ b/prov/util/src/util_wait.c @@ -599,7 +599,16 @@ static int util_wait_yield_run(struct fid_wait *wait_fid, int timeout) wait = container_of(wait_fid, struct util_wait_yield, util_wait.wait_fid); endtime = ofi_timeout_time(timeout); - while (!wait->signal) { + while (1) { + int signaled; + + ofi_mutex_lock(&wait->signal_lock); + signaled = wait->signal; + ofi_mutex_unlock(&wait->signal_lock); + + if (signaled) + break; + if (ofi_adjust_timeout(endtime, &timeout)) return -FI_ETIMEDOUT; ofi_mutex_lock(&wait->util_wait.lock);