OSDN Git Service

kvm_init_vcpu requires global lock held
authorMarcelo Tosatti <mtosatti@redhat.com>
Tue, 23 Mar 2010 16:37:13 +0000 (13:37 -0300)
committerMarcelo Tosatti <mtosatti@redhat.com>
Mon, 26 Apr 2010 14:28:35 +0000 (11:28 -0300)
Since it accesses data protected by the lock.

Signed-off-by: Avi Kivity <avi@redhat.com>
cpus.c

diff --git a/cpus.c b/cpus.c
index 8450ee4..2bf87d2 100644 (file)
--- a/cpus.c
+++ b/cpus.c
@@ -401,6 +401,7 @@ static void *kvm_cpu_thread_fn(void *arg)
 {
     CPUState *env = arg;
 
+    qemu_mutex_lock(&qemu_global_mutex);
     qemu_thread_self(env->thread);
     if (kvm_enabled())
         kvm_init_vcpu(env);
@@ -408,7 +409,6 @@ static void *kvm_cpu_thread_fn(void *arg)
     kvm_block_io_signals(env);
 
     /* signal CPU creation */
-    qemu_mutex_lock(&qemu_global_mutex);
     env->created = 1;
     qemu_cond_signal(&qemu_cpu_cond);