Meet the case when the request_threaded_irq() with the same irq is called twice continually, get the below mismatch info: "IRQ handler type mismatch for IRQ 323"
Here give a right warning that like below: "Trying to setup already-setup non-shared IRQ 323" Signed-off-by: liu chuansheng <chuansheng....@intel.com> --- kernel/irq/manage.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index e49a288..6802ce1 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -999,6 +999,16 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) old_ptr = &desc->action; old = *old_ptr; if (old) { + /* Give warning when setup an irq which has been setup + * already. + */ + if (!(old->flags & IRQF_SHARED)) { + ret = -EINVAL; + WARN(1, "Trying to setup already-setup non-shared IRQ %d\n", + irq); + goto out_mask; + } + /* * Can't share interrupts unless both agree to and are * the same type (level, edge, polarity). So both flag -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/