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:
parent
7de4228344
commit
fff895dfdb
|
@ -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;
|
CPUState *cpu;
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
|
@ -92,6 +92,15 @@ static bool adding_first_cpu(void)
|
||||||
return true;
|
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)
|
void trace_init_vcpu(CPUState *vcpu)
|
||||||
{
|
{
|
||||||
TraceEventIter iter;
|
TraceEventIter iter;
|
||||||
|
|
Loading…
Reference in New Issue