Messages in this thread Patch in this message | | | From | Kulikov Vasiliy <> | Subject | [PATCH] staging: mrst-touchscreen: fix leaks | Date | Mon, 12 Jul 2010 18:48:04 +0400 |
| |
mrstouch_probe() must unregister input device, free requested IRQ and input device in error path.
Signed-off-by: Kulikov Vasiliy <segooon@gmail.com> --- drivers/staging/mrst-touchscreen/intel-mid-touch.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/mrst-touchscreen/intel-mid-touch.c b/drivers/staging/mrst-touchscreen/intel-mid-touch.c index abba22f..8a72bbf 100644 --- a/drivers/staging/mrst-touchscreen/intel-mid-touch.c +++ b/drivers/staging/mrst-touchscreen/intel-mid-touch.c @@ -779,7 +779,7 @@ static int __devinit mrstouch_probe(struct spi_device *mrstouch_spi) 0, "mrstouch", tsdev); if (err) { dev_err(&tsdev->spi->dev, "unable to allocate irq\n"); - goto mrstouch_err_free_mem; + goto mrstouch_err_unreg_input; } tsdev->pendet_thrd = kthread_run(mrstouch_pendet, @@ -787,11 +787,16 @@ static int __devinit mrstouch_probe(struct spi_device *mrstouch_spi) if (IS_ERR(tsdev->pendet_thrd)) { dev_err(&tsdev->spi->dev, "kthread_run failed\n"); err = PTR_ERR(tsdev->pendet_thrd); - goto mrstouch_err_free_mem; + goto mrstouch_err_free_irq; } mrstouch_debug("%s", "Driver initialized"); return 0; +mrstouch_err_free_irq: + free_irq(myirq, tsdev); +mrstouch_err_unreg_input: + input_unregister_device(mrstouchdevp->input); + input_free_device(mrstouchdevp->input); mrstouch_err_free_mem: kfree(tsdev); return err; -- 1.7.0.4
| |