KVM: introduce kvm->created_vcpus
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 13 Jun 2016 12:48:25 +0000 (14:48 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 15 Jun 2016 22:05:00 +0000 (00:05 +0200)
commit6c7caebc26c5f0b618f0ef6b851e9f5f27c3812f
tree0d804b1b15e565ca3286f82a6cd219e9e3d00828
parent682a8108872f78560c891cf30c7d08aa01dac943
KVM: introduce kvm->created_vcpus

The race between creating the irqchip and the first VCPU is
currently fixed by checking the presence of an irqchip before
updating kvm->online_vcpus, and undoing the whole VCPU creation
if someone created the irqchip in the meanwhile.

Instead, introduce a new field in struct kvm that will count VCPUs
under a mutex, without the atomic access and memory ordering that we
need elsewhere to protect the vcpus array.  This also plugs the race
and is more easily applicable in all similar circumstances.

Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
include/linux/kvm_host.h
virt/kvm/kvm_main.c