]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.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)
committerAurelien Jarno <aurelien@aurel32.net>
Sat, 6 Feb 2010 16:19:43 +0000 (17:19 +0100)
Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
exec.c

diff --git a/exec.c b/exec.c
index b2a1cf14a8576fde3b82faebb0343e091a6e0bba..461bbffa68751b12e349ff0e633d0874f579f737 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 */