aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_thread.cpp
diff options
context:
space:
mode:
authorlat9nq <lat9nq@gmail.com>2022-04-01 18:57:40 -0400
committerlat9nq <lat9nq@gmail.com>2022-04-03 21:47:58 -0400
commit6bcbbb29e7822f5ebd6ac985066dfdd0890492f0 (patch)
treed903d0ab561c399600819b81e0b5823044ad7922 /src/core/hle/kernel/k_thread.cpp
parentd6a0666268d5ef51936c2475d33ab37ff14462e4 (diff)
k_thread: Fix data race
TSan reports a data race between writing at cpp:1162 and reading at h:262. Make the thread_state atomic to prevent this.
Diffstat (limited to 'src/core/hle/kernel/k_thread.cpp')
-rw-r--r--src/core/hle/kernel/k_thread.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index 94c8faf68..d3bb1c871 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -723,7 +723,7 @@ void KThread::UpdateState() {
ASSERT(kernel.GlobalSchedulerContext().IsLocked());
// Set our suspend flags in state.
- const auto old_state = thread_state;
+ const ThreadState old_state = thread_state;
const auto new_state =
static_cast<ThreadState>(this->GetSuspendFlags()) | (old_state & ThreadState::Mask);
thread_state = new_state;
@@ -738,7 +738,7 @@ void KThread::Continue() {
ASSERT(kernel.GlobalSchedulerContext().IsLocked());
// Clear our suspend flags in state.
- const auto old_state = thread_state;
+ const ThreadState old_state = thread_state;
thread_state = old_state & ThreadState::Mask;
// Note the state change in scheduler.