]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - virt/kvm/arm/vgic/vgic.c
KVM: arm/arm64: vgic: Cap SPIs to the VM-defined maximum
[mirror_ubuntu-bionic-kernel.git] / virt / kvm / arm / vgic / vgic.c
index 4332bef09228e49c2318e9d365bf4f26dc0c66bc..b75a6566f626a9e04825bdaf41889e63ae6f07d3 100644 (file)
@@ -107,13 +107,13 @@ struct vgic_irq *vgic_get_irq(struct kvm *kvm, struct kvm_vcpu *vcpu,
 {
        /* SGIs and PPIs */
        if (intid <= VGIC_MAX_PRIVATE) {
-               intid = array_index_nospec(intid, VGIC_MAX_PRIVATE);
+               intid = array_index_nospec(intid, VGIC_MAX_PRIVATE + 1);
                return &vcpu->arch.vgic_cpu.private_irqs[intid];
        }
 
        /* SPIs */
-       if (intid <= VGIC_MAX_SPI) {
-               intid = array_index_nospec(intid, VGIC_MAX_SPI);
+       if (intid < (kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS)) {
+               intid = array_index_nospec(intid, kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS);
                return &kvm->arch.vgic.spis[intid - VGIC_NR_PRIVATE_IRQS];
        }