summaryrefslogtreecommitdiff
path: root/cpus.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2010-06-25 16:56:50 +0200
committerAurelien Jarno <aurelien@aurel32.net>2010-07-22 05:52:09 +0200
commitb0052d15315f672d30da5f0ea0a57b1a7c232a03 (patch)
treea4a1255381ac5f359c917f405312c28657ee1424 /cpus.c
parent1d93f0f03d4d911fdf1dc4ef529d8b2a0c0765f2 (diff)
downloadqemu-b0052d15315f672d30da5f0ea0a57b1a7c232a03.tar.gz
qemu-b0052d15315f672d30da5f0ea0a57b1a7c232a03.tar.bz2
qemu-b0052d15315f672d30da5f0ea0a57b1a7c232a03.zip
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>
Diffstat (limited to 'cpus.c')
0 files changed, 0 insertions, 0 deletions