]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
cpus: Access CPUState::thread_kicked atomically
authorPhilippe Mathieu-Daudé <philmd@linaro.org>
Fri, 22 Aug 2025 11:42:41 +0000 (13:42 +0200)
committerPhilippe Mathieu-Daudé <philmd@linaro.org>
Mon, 3 Nov 2025 10:59:32 +0000 (11:59 +0100)
cpus_kick_thread() is called via cpu_exit() -> qemu_cpu_kick(),
and also via gdb_syscall_handling(). Access the CPUState field
using atomic accesses. See commit 8ac2ca02744 ("accel: use atomic
accesses for exit_request") for rationale.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Message-Id: <20250925025520.71805-3-philmd@linaro.org>

system/cpus.c

index aa7bfcf56e5c54b055f4a9697e964e907c09c06d..74f5a5bd4e2776ea7bf45f4b9d4d07c715500f82 100644 (file)
@@ -480,10 +480,10 @@ void qemu_process_cpu_events(CPUState *cpu)
 
 void cpus_kick_thread(CPUState *cpu)
 {
-    if (cpu->thread_kicked) {
+    if (qatomic_read(&cpu->thread_kicked)) {
         return;
     }
-    cpu->thread_kicked = true;
+    qatomic_set(&cpu->thread_kicked, true);
 
 #ifndef _WIN32
     int err = pthread_kill(cpu->thread->thread, SIG_IPI);