diff options
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 73a2b786b5e9..9530fcd27704 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -1681,8 +1681,10 @@ int request_threaded_irq(unsigned int irq, irq_handler_t handler, | |||
1681 | action->dev_id = dev_id; | 1681 | action->dev_id = dev_id; |
1682 | 1682 | ||
1683 | retval = irq_chip_pm_get(&desc->irq_data); | 1683 | retval = irq_chip_pm_get(&desc->irq_data); |
1684 | if (retval < 0) | 1684 | if (retval < 0) { |
1685 | kfree(action); | ||
1685 | return retval; | 1686 | return retval; |
1687 | } | ||
1686 | 1688 | ||
1687 | chip_bus_lock(desc); | 1689 | chip_bus_lock(desc); |
1688 | retval = __setup_irq(irq, desc, action); | 1690 | retval = __setup_irq(irq, desc, action); |
@@ -1985,8 +1987,10 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler, | |||
1985 | action->percpu_dev_id = dev_id; | 1987 | action->percpu_dev_id = dev_id; |
1986 | 1988 | ||
1987 | retval = irq_chip_pm_get(&desc->irq_data); | 1989 | retval = irq_chip_pm_get(&desc->irq_data); |
1988 | if (retval < 0) | 1990 | if (retval < 0) { |
1991 | kfree(action); | ||
1989 | return retval; | 1992 | return retval; |
1993 | } | ||
1990 | 1994 | ||
1991 | chip_bus_lock(desc); | 1995 | chip_bus_lock(desc); |
1992 | retval = __setup_irq(irq, desc, action); | 1996 | retval = __setup_irq(irq, desc, action); |