linux/virt/kvm
Marcelo Tosatti 84261923d3 KVM: protect concurrent make_all_cpus_request
make_all_cpus_request contains a race condition which can
trigger false request completed status, as follows:

CPU0                                              CPU1

if (test_and_set_bit(req,&vcpu->requests))
   ....                                        	   if (test_and_set_bit(req,&vcpu->requests))
   ..                                                  return
proceed to smp_call_function_many(wait=1)

Use a spinlock to serialize concurrent CPUs.

Cc: stable@kernel.org
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2009-06-28 14:10:29 +03:00
..
coalesced_mmio.c
coalesced_mmio.h
ioapic.c KVM: APIC: get rid of deliver_bitmask 2009-06-10 11:48:27 +03:00
ioapic.h KVM: APIC: get rid of deliver_bitmask 2009-06-10 11:48:27 +03:00
iodev.h
iommu.c KVM: Enable snooping control for supported hardware 2009-06-10 11:48:50 +03:00
irq_comm.c KVM: Trivial format fix in setup_routing_entry() 2009-06-10 11:48:50 +03:00
kvm_main.c KVM: protect concurrent make_all_cpus_request 2009-06-28 14:10:29 +03:00
kvm_trace.c KVM: Prevent trace call into unloaded module text 2008-12-31 16:55:04 +02:00