genirq: fix error path in __setup_irq
PATCH 1/1 genirq: fix error path in __setup_irq
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 <[email protected]>
--- kernel/irq/manage.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
kernel/irq/manage.c +3 -1
@@ -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 | \
Signature · 1 line
2.13.1
tip-bot for Heiner Kallweit
merge bot[tip:irq/urgent] genirq: Release resources in __setup_irq() error path
genirq: Release resources in __setup_irq() error path
Commit-ID: fa07ab72cbb0d843429e61bf179308aed6cbe0dd Gitweb: http://git.kernel.org/tip/fa07ab72cbb0d843429e61bf179308aed6cbe0dd Author: Heiner Kallweit <[email protected]> AuthorDate: Sun, 11 Jun 2017 00:38:36 +0200 Committer: Thomas Gleixner <[email protected]> CommitDate: Tue, 13 Jun 2017 00:40:39 +0200
genirq: Release resources in __setup_irq() error path
In case __irq_set_trigger() fails the resources requested via irq_request_resources() are not released.
Add the missing release call into the error handling path.
Fixes c1bacbae8192 ("genirq: Provide irq_request/release_resources chip callbacks")
Signed-off-by Heiner Kallweit <[email protected]>
Signed-off-by Thomas Gleixner <[email protected]>
--- kernel/irq/manage.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
kernel/irq/manage.c +3 -1
@@ -1312,8 +1312,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 | \