diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2011-05-18 06:48:00 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2011-05-18 08:59:08 -0400 |
| commit | fe12bc2c996d3e492b2920e32ac79f7bbae3e15d (patch) | |
| tree | 05af87563123d909d04c328aead3fe24599633d1 /kernel/irq | |
| parent | fe0514348452f5b0ad7e842b0d71b8322b1297de (diff) | |
genirq: Uninline and sanity check generic_handle_irq()
generic_handle_irq() is missing a NULL pointer check for the result of
irq_to_desc. This was a not a big problem, but we want to expose it to
drivers, so we better have sanity checks in place. Add a return value
as well, which indicates that the irq number was valid and the handler
was invoked.
Based on the pure code move from Jonathan Cameron.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jonathan Cameron <jic23@cam.ac.uk>
Diffstat (limited to 'kernel/irq')
| -rw-r--r-- | kernel/irq/irqdesc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index e07b975fdc5a..9f65b0225d6a 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c | |||
| @@ -290,6 +290,21 @@ static int irq_expand_nr_irqs(unsigned int nr) | |||
| 290 | 290 | ||
| 291 | #endif /* !CONFIG_SPARSE_IRQ */ | 291 | #endif /* !CONFIG_SPARSE_IRQ */ |
| 292 | 292 | ||
| 293 | /** | ||
| 294 | * generic_handle_irq - Invoke the handler for a particular irq | ||
| 295 | * @irq: The irq number to handle | ||
| 296 | * | ||
| 297 | */ | ||
| 298 | int generic_handle_irq(unsigned int irq) | ||
| 299 | { | ||
| 300 | struct irq_desc *desc = irq_to_desc(irq); | ||
| 301 | |||
| 302 | if (!desc) | ||
| 303 | return -EINVAL; | ||
| 304 | generic_handle_irq_desc(irq, desc); | ||
| 305 | return 0; | ||
| 306 | } | ||
| 307 | |||
| 293 | /* Dynamic interrupt handling */ | 308 | /* Dynamic interrupt handling */ |
| 294 | 309 | ||
| 295 | /** | 310 | /** |
