Input: twl4030_keypad - fix error handling path
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 30 Sep 2010 01:36:00 +0000 (18:36 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 13 Oct 2010 14:49:24 +0000 (07:49 -0700)
We should not try to call free_irq() when request_irq() failed.

Reported-by: G, Manjunath Kondaiah <manjugk@ti.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/keyboard/twl4030_keypad.c

index fb16b5e5ea13fd64a461577778bec1d3e9c04343..09bef79d9da1c6e3aecd6efe40c0d4c4c900ba0b 100644 (file)
@@ -406,23 +406,22 @@ static int __devinit twl4030_kp_probe(struct platform_device *pdev)
        if (error) {
                dev_info(kp->dbg_dev, "request_irq failed for irq no=%d\n",
                        kp->irq);
-               goto err3;
+               goto err2;
        }
 
        /* Enable KP and TO interrupts now. */
        reg = (u8) ~(KEYP_IMR1_KP | KEYP_IMR1_TO);
        if (twl4030_kpwrite_u8(kp, reg, KEYP_IMR1)) {
                error = -EIO;
-               goto err4;
+               goto err3;
        }
 
        platform_set_drvdata(pdev, kp);
        return 0;
 
-err4:
+err3:
        /* mask all events - we don't care about the result */
        (void) twl4030_kpwrite_u8(kp, 0xff, KEYP_IMR1);
-err3:
        free_irq(kp->irq, NULL);
 err2:
        input_unregister_device(input);