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, | |||
130 | irq_set_status_flags(sys->irq, IRQ_NOAUTOEN); | 130 | irq_set_status_flags(sys->irq, IRQ_NOAUTOEN); |
131 | ret = request_irq(sys->irq, clk_system_irq_handler, | 131 | ret = request_irq(sys->irq, clk_system_irq_handler, |
132 | IRQF_TRIGGER_HIGH, name, sys); | 132 | IRQF_TRIGGER_HIGH, name, sys); |
133 | if (ret) | 133 | if (ret) { |
134 | kfree(sys); | ||
134 | return ERR_PTR(ret); | 135 | return ERR_PTR(ret); |
136 | } | ||
135 | } | 137 | } |
136 | 138 | ||
137 | clk = clk_register(NULL, &sys->hw); | 139 | clk = clk_register(NULL, &sys->hw); |
138 | if (IS_ERR(clk)) | 140 | if (IS_ERR(clk)) { |
141 | free_irq(sys->irq, sys); | ||
139 | kfree(sys); | 142 | kfree(sys); |
143 | } | ||
140 | 144 | ||
141 | return clk; | 145 | return clk; |
142 | } | 146 | } |