diff options
Diffstat (limited to 'drivers/clk/at91/clk-system.c')
| -rw-r--r-- | drivers/clk/at91/clk-system.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/clk/at91/clk-system.c b/drivers/clk/at91/clk-system.c index a76d03fd577b..58008b3e8bc1 100644 --- a/drivers/clk/at91/clk-system.c +++ b/drivers/clk/at91/clk-system.c @@ -130,13 +130,17 @@ at91_clk_register_system(struct at91_pmc *pmc, const char *name,  		irq_set_status_flags(sys->irq, IRQ_NOAUTOEN);  		ret = request_irq(sys->irq, clk_system_irq_handler,  				IRQF_TRIGGER_HIGH, name, sys); -		if (ret) +		if (ret) { +			kfree(sys);  			return ERR_PTR(ret); +		}  	}  	clk = clk_register(NULL, &sys->hw); -	if (IS_ERR(clk)) +	if (IS_ERR(clk)) { +		free_irq(sys->irq, sys);  		kfree(sys); +	}  	return clk;  }  |