diff options
author | Vasiliy Kulikov <segooon@gmail.com> | 2010-09-12 14:57:19 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-10-28 18:29:32 -0400 |
commit | 02bf07492341d94e29890082201dd69dbf406570 (patch) | |
tree | f7430d2986cba406c62da5b009c03c99ca942d7f /drivers/gpio/stmpe-gpio.c | |
parent | 1819ebcf1dc5ba9a19dab1f51a21af6274bbd829 (diff) |
gpio: Fix stmpe error path
Free allocated memory. Call stmpe_disable() if it was enabled.
Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/gpio/stmpe-gpio.c')
-rw-r--r-- | drivers/gpio/stmpe-gpio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpio/stmpe-gpio.c b/drivers/gpio/stmpe-gpio.c index 932759db1ac..7c9e6a052c4 100644 --- a/drivers/gpio/stmpe-gpio.c +++ b/drivers/gpio/stmpe-gpio.c | |||
@@ -315,11 +315,11 @@ static int __devinit stmpe_gpio_probe(struct platform_device *pdev) | |||
315 | 315 | ||
316 | ret = stmpe_enable(stmpe, STMPE_BLOCK_GPIO); | 316 | ret = stmpe_enable(stmpe, STMPE_BLOCK_GPIO); |
317 | if (ret) | 317 | if (ret) |
318 | return ret; | 318 | goto out_free; |
319 | 319 | ||
320 | ret = stmpe_gpio_irq_init(stmpe_gpio); | 320 | ret = stmpe_gpio_irq_init(stmpe_gpio); |
321 | if (ret) | 321 | if (ret) |
322 | goto out_free; | 322 | goto out_disable; |
323 | 323 | ||
324 | ret = request_threaded_irq(irq, NULL, stmpe_gpio_irq, IRQF_ONESHOT, | 324 | ret = request_threaded_irq(irq, NULL, stmpe_gpio_irq, IRQF_ONESHOT, |
325 | "stmpe-gpio", stmpe_gpio); | 325 | "stmpe-gpio", stmpe_gpio); |
@@ -345,6 +345,8 @@ out_freeirq: | |||
345 | free_irq(irq, stmpe_gpio); | 345 | free_irq(irq, stmpe_gpio); |
346 | out_removeirq: | 346 | out_removeirq: |
347 | stmpe_gpio_irq_remove(stmpe_gpio); | 347 | stmpe_gpio_irq_remove(stmpe_gpio); |
348 | out_disable: | ||
349 | stmpe_disable(stmpe, STMPE_BLOCK_GPIO); | ||
348 | out_free: | 350 | out_free: |
349 | kfree(stmpe_gpio); | 351 | kfree(stmpe_gpio); |
350 | return ret; | 352 | return ret; |