If __irq_set_trigger() fails irq_request_resources() was successfully called before. Therefore we should release all potentially claimed resources in the error path.
Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com> --- kernel/irq/manage.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 49c37f1e..4c34696c 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1318,8 +1318,10 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) ret = __irq_set_trigger(desc, new->flags & IRQF_TRIGGER_MASK); - if (ret) + if (ret) { + irq_release_resources(desc); goto out_mask; + } } desc->istate &= ~(IRQS_AUTODETECT | IRQS_SPURIOUS_DISABLED | \ -- 2.13.1