Patchwork [2/5] fix locking error with current_tb

login
register
mail settings
Submitter Riku Voipio
Date Jan. 26, 2010, 4 p.m.
Message ID <1264521604-2020-3-git-send-email-riku.voipio@iki.fi>
Download mbox | patch
Permalink /patch/43712/
State New
Headers show

Comments

Riku Voipio - Jan. 26, 2010, 4 p.m.
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(-)

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 */