forked from luck/tmp_suning_uos_patched
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>
This commit is contained in:
parent
fe05143484
commit
fe12bc2c99
@ -111,10 +111,7 @@ static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *de
|
|||||||
desc->handle_irq(irq, desc);
|
desc->handle_irq(irq, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void generic_handle_irq(unsigned int irq)
|
int generic_handle_irq(unsigned int irq);
|
||||||
{
|
|
||||||
generic_handle_irq_desc(irq, irq_to_desc(irq));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Test to see if a driver has successfully requested an irq */
|
/* Test to see if a driver has successfully requested an irq */
|
||||||
static inline int irq_has_action(unsigned int irq)
|
static inline int irq_has_action(unsigned int irq)
|
||||||
|
@ -290,6 +290,21 @@ static int irq_expand_nr_irqs(unsigned int nr)
|
|||||||
|
|
||||||
#endif /* !CONFIG_SPARSE_IRQ */
|
#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 */
|
/* Dynamic interrupt handling */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user