summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/local_apic.c6
-rw-r--r--sys/i386/i386/local_apic.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/sys/amd64/amd64/local_apic.c b/sys/amd64/amd64/local_apic.c
index 40cf1cb..d3905e8 100644
--- a/sys/amd64/amd64/local_apic.c
+++ b/sys/amd64/amd64/local_apic.c
@@ -950,11 +950,15 @@ apic_free_vector(u_int apic_id, u_int vector, u_int irq)
u_int
apic_idt_to_irq(u_int apic_id, u_int vector)
{
+ int irq;
KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL &&
vector <= APIC_IO_INTS + APIC_NUM_IOINTS,
("Vector %u does not map to an IRQ line", vector));
- return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]);
+ irq = lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS];
+ if (irq < 0)
+ irq = 0;
+ return (irq);
}
#ifdef DDB
diff --git a/sys/i386/i386/local_apic.c b/sys/i386/i386/local_apic.c
index 571edc4..82e2c30 100644
--- a/sys/i386/i386/local_apic.c
+++ b/sys/i386/i386/local_apic.c
@@ -954,11 +954,15 @@ apic_free_vector(u_int apic_id, u_int vector, u_int irq)
u_int
apic_idt_to_irq(u_int apic_id, u_int vector)
{
+ int irq;
KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL &&
vector <= APIC_IO_INTS + APIC_NUM_IOINTS,
("Vector %u does not map to an IRQ line", vector));
- return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]);
+ irq = lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS];
+ if (irq < 0)
+ irq = 0;
+ return (irq);
}
#ifdef DDB
OpenPOWER on IntegriCloud