]> git.proxmox.com Git - qemu.git/commitdiff
fix locking error with current_tb
authorRiku Voipio <riku.voipio@nokia.com>
Wed, 20 Jan 2010 10:56:27 +0000 (12:56 +0200)
committerRiku Voipio <riku.voipio@nokia.com>
Fri, 5 Feb 2010 12:50:58 +0000 (14:50 +0200)
Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
exec.c

diff --git a/exec.c b/exec.c
index 76831a194f495ece22a928cf9fe06a3b1906bf24..431e104a1c7c5b16c47a84790f693a716ede66dc 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -1537,15 +1537,15 @@ static void cpu_unlink_tb(CPUState *env)
     TranslationBlock *tb;
     static spinlock_t interrupt_lock = SPIN_LOCK_UNLOCKED;
 
+    spin_lock(&interrupt_lock);
     tb = env->current_tb;
     /* if the cpu is currently executing code, we must unlink it and
        all the potentially executing TB */
     if (tb) {
-        spin_lock(&interrupt_lock);
         env->current_tb = NULL;
         tb_reset_jump_recursive(tb);
-        spin_unlock(&interrupt_lock);
     }
+    spin_unlock(&interrupt_lock);
 }
 
 /* mask must never be zero, except for A20 change call */