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,  	action->dev_id = dev_id;  	retval = irq_chip_pm_get(&desc->irq_data); -	if (retval < 0) +	if (retval < 0) { +		kfree(action);  		return retval; +	}  	chip_bus_lock(desc);  	retval = __setup_irq(irq, desc, action); @@ -1985,8 +1987,10 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler,  	action->percpu_dev_id = dev_id;  	retval = irq_chip_pm_get(&desc->irq_data); -	if (retval < 0) +	if (retval < 0) { +		kfree(action);  		return retval; +	}  	chip_bus_lock(desc);  	retval = __setup_irq(irq, desc, action);  |