Input: h3600_ts_input - fix a leak of the IRQ during init failure
authorAxel Lin <axel.lin@gmail.com>
Tue, 3 May 2011 15:56:56 +0000 (08:56 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 3 May 2011 16:02:13 +0000 (09:02 -0700)
Make sure we are passing the same cookie in all calls to request_irq() and
free_irq().

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/touchscreen/h3600_ts_input.c

index 45f93d0..211811a 100644 (file)
@@ -396,14 +396,14 @@ static int h3600ts_connect(struct serio *serio, struct serio_driver *drv)
        set_GPIO_IRQ_edge(GPIO_BITSY_NPOWER_BUTTON, GPIO_RISING_EDGE);
 
        if (request_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, action_button_handler,
-                       IRQF_SHARED | IRQF_DISABLED, "h3600_action", &ts->dev)) {
+                       IRQF_SHARED | IRQF_DISABLED, "h3600_action", ts->dev)) {
                printk(KERN_ERR "h3600ts.c: Could not allocate Action Button IRQ!\n");
                err = -EBUSY;
                goto fail1;
        }
 
        if (request_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, npower_button_handler,
-                       IRQF_SHARED | IRQF_DISABLED, "h3600_suspend", &ts->dev)) {
+                       IRQF_SHARED | IRQF_DISABLED, "h3600_suspend", ts->dev)) {
                printk(KERN_ERR "h3600ts.c: Could not allocate Power Button IRQ!\n");
                err = -EBUSY;
                goto fail2;
@@ -439,8 +439,8 @@ static void h3600ts_disconnect(struct serio *serio)
 {
        struct h3600_dev *ts = serio_get_drvdata(serio);
 
-       free_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, &ts->dev);
-       free_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, &ts->dev);
+       free_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, ts->dev);
+       free_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, ts->dev);
        input_get_device(ts->dev);
        input_unregister_device(ts->dev);
        serio_close(serio);