aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-05-18 12:48:00 +0200
committerThomas Gleixner <tglx@linutronix.de>2011-05-18 14:59:08 +0200
commitfe12bc2c996d3e492b2920e32ac79f7bbae3e15d (patch)
tree05af87563123d909d04c328aead3fe24599633d1 /kernel/irq
parentfe0514348452f5b0ad7e842b0d71b8322b1297de (diff)
downloadkernel_samsung_smdk4412-fe12bc2c996d3e492b2920e32ac79f7bbae3e15d.zip
kernel_samsung_smdk4412-fe12bc2c996d3e492b2920e32ac79f7bbae3e15d.tar.gz
kernel_samsung_smdk4412-fe12bc2c996d3e492b2920e32ac79f7bbae3e15d.tar.bz2
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.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index e07b975..9f65b02 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -290,6 +290,21 @@ static int irq_expand_nr_irqs(unsigned int nr)
#endif /* !CONFIG_SPARSE_IRQ */
+/**
+ * generic_handle_irq - Invoke the handler for a particular irq
+ * @irq: The irq number to handle
+ *
+ */
+int generic_handle_irq(unsigned int irq)
+{
+ struct irq_desc *desc = irq_to_desc(irq);
+
+ if (!desc)
+ return -EINVAL;
+ generic_handle_irq_desc(irq, desc);
+ return 0;
+}
+
/* Dynamic interrupt handling */
/**