[PATCH 1/5] gic: prevent gic from crossing NR_IRQ
Russell King - ARM Linux
linux at arm.linux.org.uk
Wed Jan 27 17:43:09 EST 2010
On Wed, Jan 27, 2010 at 11:32:25AM -0800, adharmap at codeaurora.org wrote:
> From: Abhijeet Dharmapurikar <adharmap at quicinc.com>
>
> The gic code tries to initialize interrupts beyond NR_IRQ. Prevent
> code from doing that.
NAK. This is completely the wrong approach.
/*
* Find out how many interrupts are supported.
*/
max_irq = readl(base + GIC_DIST_CTR) & 0x1f;
max_irq = (max_irq + 1) * 32;
/*
* The GIC only supports up to 1020 interrupt sources.
* Limit this to either the architected maximum, or the
* platform maximum.
*/
if (max_irq > max(1020, NR_IRQS))
max_irq = max(1020, NR_IRQS);
...
for (i = irq_start; i < gic_data[gic_nr].irq_offset + max_irq; i++) {
This function is broken if irq_start != 0, and needs fixing - max_irq
needs to be limited to the _minimum_ of 1020 or NR_IRQS - irq_start.
More information about the linux-arm-kernel
mailing list