diff options
author | lat9nq <lat9nq@gmail.com> | 2022-04-01 19:54:35 -0400 |
---|---|---|
committer | lat9nq <lat9nq@gmail.com> | 2022-04-03 21:47:58 -0400 |
commit | 983916e9193a65d2cbd55039cc1569c46a7081c1 (patch) | |
tree | 6b973ce8161a4896839718e0bb93d90831211e09 | |
parent | 6bcbbb29e7822f5ebd6ac985066dfdd0890492f0 (diff) |
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.
-rw-r--r-- | src/core/hle/kernel/k_auto_object.h | 2 |
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: do { ASSERT(cur_ref_count > 0); } while (!m_ref_count.compare_exchange_weak(cur_ref_count, cur_ref_count - 1, - std::memory_order_relaxed)); + std::memory_order_acq_rel)); // If ref count hits zero, destroy the object. if (cur_ref_count - 1 == 0) { |