Commit a9cc0202 authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: twl4030_keypad - fix error handling path

We should not try to call free_irq() when request_irq() failed.
Reported-by: default avatarG, Manjunath Kondaiah <manjugk@ti.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 6792cbbb
...@@ -406,23 +406,22 @@ static int __devinit twl4030_kp_probe(struct platform_device *pdev) ...@@ -406,23 +406,22 @@ static int __devinit twl4030_kp_probe(struct platform_device *pdev)
if (error) { if (error) {
dev_info(kp->dbg_dev, "request_irq failed for irq no=%d\n", dev_info(kp->dbg_dev, "request_irq failed for irq no=%d\n",
kp->irq); kp->irq);
goto err3; goto err2;
} }
/* Enable KP and TO interrupts now. */ /* Enable KP and TO interrupts now. */
reg = (u8) ~(KEYP_IMR1_KP | KEYP_IMR1_TO); reg = (u8) ~(KEYP_IMR1_KP | KEYP_IMR1_TO);
if (twl4030_kpwrite_u8(kp, reg, KEYP_IMR1)) { if (twl4030_kpwrite_u8(kp, reg, KEYP_IMR1)) {
error = -EIO; error = -EIO;
goto err4; goto err3;
} }
platform_set_drvdata(pdev, kp); platform_set_drvdata(pdev, kp);
return 0; return 0;
err4: err3:
/* mask all events - we don't care about the result */ /* mask all events - we don't care about the result */
(void) twl4030_kpwrite_u8(kp, 0xff, KEYP_IMR1); (void) twl4030_kpwrite_u8(kp, 0xff, KEYP_IMR1);
err3:
free_irq(kp->irq, NULL); free_irq(kp->irq, NULL);
err2: err2:
input_unregister_device(input); input_unregister_device(input);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment