diff options
author | Lluís Vilanova <vilanova@ac.upc.edu> | 2016-12-26 22:24:35 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2017-01-16 13:40:56 +0000 |
commit | fff895dfdbe41965f7b0430e3d9e8b7bd8fc8eda (patch) | |
tree | cdf9540d888b9507b5de6228a0314c40449cedd8 | |
parent | 7de422834447b635fefe3a7a250e3b581ce4ae6e (diff) |
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>
-rw-r--r-- | trace/control-target.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/trace/control-target.c b/trace/control-target.c index 7ebf6e0bcb..e2e138a3f0 100644 --- a/trace/control-target.c +++ b/trace/control-target.c @@ -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; |