summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar lat9nq2022-04-01 19:54:35 -0400
committerGravatar lat9nq2022-04-03 21:47:58 -0400
commit983916e9193a65d2cbd55039cc1569c46a7081c1 (patch)
tree6b973ce8161a4896839718e0bb93d90831211e09 /src
parentk_thread: Fix data race (diff)
downloadyuzu-983916e9193a65d2cbd55039cc1569c46a7081c1.tar.gz
yuzu-983916e9193a65d2cbd55039cc1569c46a7081c1.tar.xz
yuzu-983916e9193a65d2cbd55039cc1569c46a7081c1.zip
k_auto_object: Fix data race
Change the memory order to acqure-release when we decrement the reference count. Prevents a race with line 89 reported by TSan.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/k_auto_object.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h
index 05779f2d5..abdb8ae7c 100644
--- a/src/core/hle/kernel/k_auto_object.h
+++ b/src/core/hle/kernel/k_auto_object.h
@@ -163,7 +163,7 @@ public:
163 do { 163 do {
164 ASSERT(cur_ref_count > 0); 164 ASSERT(cur_ref_count > 0);
165 } while (!m_ref_count.compare_exchange_weak(cur_ref_count, cur_ref_count - 1, 165 } while (!m_ref_count.compare_exchange_weak(cur_ref_count, cur_ref_count - 1,
166 std::memory_order_relaxed)); 166 std::memory_order_acq_rel));
167 167
168 // If ref count hits zero, destroy the object. 168 // If ref count hits zero, destroy the object.
169 if (cur_ref_count - 1 == 0) { 169 if (cur_ref_count - 1 == 0) {