On Sun, Nov 15, 2015 at 10:00 PM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote: > The ACPI compiler uses the extended format when used > interrupt numbers are greater than 256. The PCI link code > currently only supports simple interrupt format. The IRQ > numbers are represented using 32 bits when extended IRQ > syntax. This patch changes the interrupt number type to > 32 bits and places an upper limit of 1020 as possible > interrupt id. > > 1020 is the maximum interrupt ID that can be assigned to > an ARM SPI interrupt according to ARM architecture. > > Additional checks have been placed to prevent out of bounds > writes. One comment below. > @@ -541,14 +547,16 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link) > else > irq = link->irq.possible[link->irq.possible_count - 1]; > > - if (acpi_irq_balance || !link->irq.active) { > + if ((acpi_irq_balance || !link->irq.active) && (irq < ACPI_MAX_IRQS)) { > /* > * Select the best IRQ. This is done in reverse to promote > * the use of IRQs 9, 10, 11, and >15. > */ > - for (i = (link->irq.possible_count - 1); i >= 0; i--) { > - if (acpi_irq_penalty[irq] > > - acpi_irq_penalty[link->irq.possible[i]]) > + i = link->irq.possible_count; > + while (--i) { Actually it should be (--i >= 0). Sorry if I misled you. > + if ((link->irq.possible[i] < ACPI_MAX_IRQS) && > + (acpi_irq_penalty[irq] > > + acpi_irq_penalty[link->irq.possible[i]])) > irq = link->irq.possible[i]; > } > } -- With Best Regards, Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html