]> git.proxmox.com Git - mirror_qemu.git/commit - cpu-exec.c
Fix cpu_unlink_tb race
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 25 Jun 2010 14:56:50 +0000 (16:56 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Thu, 22 Jul 2010 03:52:09 +0000 (05:52 +0200)
commitb0052d15315f672d30da5f0ea0a57b1a7c232a03
treea4a1255381ac5f359c917f405312c28657ee1424
parent1d93f0f03d4d911fdf1dc4ef529d8b2a0c0765f2
Fix cpu_unlink_tb race

If a signal hit after the env->exit_request check but before cpu_exec
updated env->current_tb, cpu_unlink_tb called from the signal hander
will not unlink the current TB. This may leave us stuck in a guest loop
if no further unlink is invoked.

Fix this by reordering current_tb update and exit_request check,
additionally enforcing the correct order via a compiler barrier.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
cpu-exec.c