|
@@ -113,9 +113,12 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
|
|
|
/* Loop over all IRQs affected by this read */
|
|
|
for (i = 0; i < len * 8; i++) {
|
|
|
struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, vcpu, intid + i);
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
+ spin_lock_irqsave(&irq->irq_lock, flags);
|
|
|
if (irq_is_pending(irq))
|
|
|
value |= (1U << i);
|
|
|
+ spin_unlock_irqrestore(&irq->irq_lock, flags);
|
|
|
|
|
|
vgic_put_irq(vcpu->kvm, irq);
|
|
|
}
|