mb/amd/mandolin: handle invalid intr_index values in init_tables
Make sure that the intr_index is valid to avoid out-of-bounds writes to the fch_pic_routing and fch_apic_routing arrays. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I45ab115f3814b212243c4f6cf706daf77b6ff3b2 Reviewed-on: https://review.coreboot.org/c/coreboot/+/68848 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
This commit is contained in:
parent
3ad216be1d
commit
ec69bdcd2f
|
@ -69,6 +69,12 @@ static void init_tables(void)
|
||||||
memset(fch_apic_routing, PIRQ_NC, sizeof(fch_apic_routing));
|
memset(fch_apic_routing, PIRQ_NC, sizeof(fch_apic_routing));
|
||||||
|
|
||||||
for (i = 0; i < mb_fch_irq_mapping_table_size; i++) {
|
for (i = 0; i < mb_fch_irq_mapping_table_size; i++) {
|
||||||
|
if (mb_irq_map[i].intr_index >= FCH_IRQ_ROUTING_ENTRIES) {
|
||||||
|
printk(BIOS_WARNING,
|
||||||
|
"Invalid IRQ index %u in FCH IRQ routing table entry %zu\n",
|
||||||
|
mb_irq_map[i].intr_index, i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
fch_pic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].pic_irq_num;
|
fch_pic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].pic_irq_num;
|
||||||
fch_apic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].apic_irq_num;
|
fch_apic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].apic_irq_num;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue