diff mbox

[2/5] fix locking error with current_tb

Message ID 1264521604-2020-3-git-send-email-riku.voipio@iki.fi
State New
Headers show

Commit Message

Riku Voipio Jan. 26, 2010, 4 p.m. UTC
From: Riku Voipio <riku.voipio@nokia.com>

Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
---
 exec.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/exec.c b/exec.c
index 1190591..71f655f 100644
--- 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 */