mirror of https://github.com/xemu-project/xemu.git
cpus: Don't kick un-realized cpus.
followinga464982499
, it's now possible for there to be attempts to take the BQL before CPUs have been realized in cases where a machine model inits peripherals before the first CPU. BQL lock aquisition kicks the first_cpu, leading to a segfault if this happens pre-realize. Guard the CPU kick routine to perform no action for a CPU that doesn't exist or doesn't have a thread yet. There was a fix to this with commit6b49809c59
, but the check there misses the case where the CPU has been inited and not realized. Strengthen the check to make sure that the first_cpu has a thread (i.e. it is realized) before allowing the kick. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-Id: <1427107689-6946-1-git-send-email-peter.crosthwaite@xilinx.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4bc7b4d566
commit
bdd459a00a
2
cpus.c
2
cpus.c
|
@ -1119,7 +1119,7 @@ bool qemu_in_vcpu_thread(void)
|
|||
void qemu_mutex_lock_iothread(void)
|
||||
{
|
||||
atomic_inc(&iothread_requesting_mutex);
|
||||
if (!tcg_enabled() || !first_cpu) {
|
||||
if (!tcg_enabled() || !first_cpu || !first_cpu->thread) {
|
||||
qemu_mutex_lock(&qemu_global_mutex);
|
||||
atomic_dec(&iothread_requesting_mutex);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue