trace: Lock vCPU list when initializing dynamic tracing state

Fixes potential corruption when a vCPU is hot-(un)plugged while
initializing the current one.

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Message-id: 148278747515.1404.6538173443841279200.stgit@fimbulvetr.bsc.es
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Lluís Vilanova 2016-12-26 22:24:35 +01:00 committed by Stefan Hajnoczi
parent 7de4228344
commit fff895dfdb
1 changed files with 10 additions and 1 deletions

View File

@ -79,7 +79,7 @@ void trace_event_set_vcpu_state_dynamic(CPUState *vcpu,
}
}
static bool adding_first_cpu(void)
static bool adding_first_cpu1(void)
{
CPUState *cpu;
size_t count = 0;
@ -92,6 +92,15 @@ static bool adding_first_cpu(void)
return true;
}
static bool adding_first_cpu(void)
{
bool res;
cpu_list_lock();
res = adding_first_cpu1();
cpu_list_unlock();
return res;
}
void trace_init_vcpu(CPUState *vcpu)
{
TraceEventIter iter;