linux/kernel/irq
Yinghai Lu ed4dea6e0e genirq: Use IRQ_BITMAP_BITS as search size in irq_alloc_descs()
The runtime expansion of nr_irqs does not take into account that
bitmap_find_next_zero_area() returns "start" + size in case the search
for an matching zero area fails. That results in a start value which
can be completely off and is not covered by the following
expand_nr_irqs() and possibly outside of the absolute limit. But we
use it without further checking.

Use IRQ_BITMAP_BITS as the limit for the bitmap search and expand
nr_irqs when the start bit is beyond nr_irqs. So start is always
pointing to the correct area in the bitmap. nr_irqs is just the limit
for irq enumerations, not the real limit for the irq space.

[ tglx: Let irq_expand_nr_irqs() take the new upper end so we do not
  	expand nr_irqs more than necessary. Made changelog readable ]

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
LKML-Reference: <4D6014F9.8040605@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2011-02-21 21:20:00 +01:00
..
autoprobe.c genirq: Remove real old transition functions 2011-02-19 12:58:23 +01:00
chip.c genirq: Fix misplaced status update in irq_disable() 2011-02-21 21:19:59 +01:00
compat.h genirq: Move IRQ_AFFINITY_SET to core 2011-02-19 12:58:20 +01:00
debug.h genirq: Move debug code to separate header 2011-02-19 12:58:19 +01:00
devres.c devres/irq: Fix devm_irq_match comment 2010-02-11 16:01:02 +01:00
dummychip.c genirq: Fix CONFIG_GENIRQ_NO_DEPRECATED=y build 2010-10-12 21:59:55 +02:00
handle.c genirq: Force wrapped access to desc->status in core code 2011-02-19 12:58:21 +01:00
internals.h genirq: Implement irq_get/put_desc_[bus]locked/unlock() 2011-02-19 12:58:23 +01:00
irqdesc.c genirq: Use IRQ_BITMAP_BITS as search size in irq_alloc_descs() 2011-02-21 21:20:00 +01:00
Kconfig genirq: Add preflow handler support 2011-02-19 12:58:24 +01:00
Makefile genirq: Remove the now unused sparse irq leftovers 2010-10-12 16:53:44 +02:00
manage.c genirq: Use irq_get/put functions 2011-02-19 12:58:23 +01:00
migration.c genirq: Implement irq_data based move_*_irq() versions 2011-02-19 12:58:25 +01:00
pm.c genirq: Move wakeup state to irq_data 2011-02-19 12:58:22 +01:00
proc.c genirq: Reuse existing can set affinty check 2011-02-19 12:58:20 +01:00
resend.c genirq: Mirror irq trigger type bits in irq_data.state 2011-02-19 12:58:20 +01:00
settings.h genirq: Remove desc->status when GENERIC_HARDIRQS_NO_COMPAT=y 2011-02-19 12:58:22 +01:00
spurious.c genirq: Wrap the remaning IRQ_* flags 2011-02-19 12:58:21 +01:00