aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pnp
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pnp')
-rw-r--r--drivers/pnp/pnpacpi/rsparser.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index 3aaf406b67b8..851c773feae1 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -455,9 +455,16 @@ static __init void pnpacpi_parse_ext_irq_option(struct pnp_dev *dev,
455 return; 455 return;
456 456
457 bitmap_zero(map.bits, PNP_IRQ_NR); 457 bitmap_zero(map.bits, PNP_IRQ_NR);
458 for (i = 0; i < p->interrupt_count; i++) 458 for (i = 0; i < p->interrupt_count; i++) {
459 if (p->interrupts[i]) 459 if (p->interrupts[i]) {
460 __set_bit(p->interrupts[i], map.bits); 460 if (p->interrupts[i] < PNP_IRQ_NR)
461 __set_bit(p->interrupts[i], map.bits);
462 else
463 dev_err(&dev->dev, "ignoring IRQ %d option "
464 "(too large for %d entry bitmap)\n",
465 p->interrupts[i], PNP_IRQ_NR);
466 }
467 }
461 468
462 flags = irq_flags(p->triggering, p->polarity, p->sharable); 469 flags = irq_flags(p->triggering, p->polarity, p->sharable);
463 pnp_register_irq_resource(dev, option, &map, flags); 470 pnp_register_irq_resource(dev, option, &map, flags);