KVM: x86: Zero the IOAPIC scan request dest vCPUs bitmap
authorNitesh Narayan Lal <nitesh@redhat.com>
Wed, 20 Nov 2019 12:12:24 +0000 (07:12 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 20 Nov 2019 13:23:24 +0000 (14:23 +0100)
Not zeroing the bitmap used for identifying the destination vCPUs for an
IOAPIC scan request in fixed delivery mode could lead to waking up unwanted
vCPUs. This patch zeroes the vCPU bitmap before passing it to
kvm_bitmap_or_dest_vcpus(), which is responsible for setting the bitmap
with the bits corresponding to the destination vCPUs.

Fixes: 7ee30bc132c6("KVM: x86: deliver KVM IOAPIC scan request to target vCPUs")
Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/ioapic.c

index ce30ef23c86bc3c74d44799a84227a54e0186fb4..9fd2dd89a1c5e304dcb179304cff8915c1a2f4ee 100644 (file)
@@ -332,6 +332,7 @@ static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)
                        irq.delivery_mode = e->fields.delivery_mode << 8;
                        irq.dest_id = e->fields.dest_id;
                        irq.dest_mode = e->fields.dest_mode;
+                       bitmap_zero(&vcpu_bitmap, 16);
                        kvm_bitmap_or_dest_vcpus(ioapic->kvm, &irq,
                                                 &vcpu_bitmap);
                        if (old_dest_mode != e->fields.dest_mode ||