diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2010-06-25 16:56:50 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2010-07-22 05:52:09 +0200 |
commit | b0052d15315f672d30da5f0ea0a57b1a7c232a03 (patch) | |
tree | a4a1255381ac5f359c917f405312c28657ee1424 /cpus.c | |
parent | 1d93f0f03d4d911fdf1dc4ef529d8b2a0c0765f2 (diff) | |
download | qemu-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