diff --git a/cpus.c b/cpus.c
index e476a3c..30f3228 100644
--- a/cpus.c
+++ b/cpus.c
@@ -726,6 +726,9 @@ static void qemu_kvm_wait_io_event(CPUArchState *env)
     }
 
     qemu_kvm_eat_signals(env);
+    /* Ensure that checking env->stop cannot overtake signal processing so
+     * that we lose the latter without stopping. */
+    smp_rmb();
     qemu_wait_io_event_common(env);
 }
 
