Input: grip - handle errors from input_register_device()
authorDmitry Torokhov <dtor_core@ameritech.net>
Mon, 30 Jan 2006 02:51:21 +0000 (21:51 -0500)
committerDmitry Torokhov <dtor_core@ameritech.net>
Mon, 30 Jan 2006 02:51:21 +0000 (21:51 -0500)
Also set .owner in driver structure so we'll have a link between
module and driver in sysfs.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/joystick/grip.c

index 330c6717c149724ada1bb407006c87cdb3e38b7b..20cb98ac2d794d20de2a385555d337e97116bd1d 100644 (file)
@@ -384,12 +384,15 @@ static int grip_connect(struct gameport *gameport, struct gameport_driver *drv)
                        if (t > 0)
                                set_bit(t, input_dev->keybit);
 
-               input_register_device(grip->dev[i]);
+               err = input_register_device(grip->dev[i]);
+               if (err)
+                       goto fail4;
        }
 
        return 0;
 
- fail3: for (i = 0; i < 2; i++)
+ fail4:        input_free_device(grip->dev[i]);
+ fail3:        while (--i >= 0)
                if (grip->dev[i])
                        input_unregister_device(grip->dev[i]);
  fail2:        gameport_close(gameport);
@@ -414,6 +417,7 @@ static void grip_disconnect(struct gameport *gameport)
 static struct gameport_driver grip_drv = {
        .driver         = {
                .name   = "grip",
+               .owner  = THIS_MODULE,
        },
        .description    = DRIVER_DESC,
        .connect        = grip_connect,