aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor_core@ameritech.net>2006-01-29 21:51:21 -0500
committerDmitry Torokhov <dtor_core@ameritech.net>2006-01-29 21:51:21 -0500
commit0399addd71565b27eae27821fa04dad44f8644fe (patch)
tree893ed1f7ff62692175bbd922e9bcf6eb56e92876 /drivers/input
parent3575c3410071dc778d2d9c6002493a5dce73ec0b (diff)
Input: grip - handle errors from input_register_device()
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>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/joystick/grip.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/input/joystick/grip.c b/drivers/input/joystick/grip.c
index 330c6717c149..20cb98ac2d79 100644
--- a/drivers/input/joystick/grip.c
+++ b/drivers/input/joystick/grip.c
@@ -384,12 +384,15 @@ static int grip_connect(struct gameport *gameport, struct gameport_driver *drv)
384 if (t > 0) 384 if (t > 0)
385 set_bit(t, input_dev->keybit); 385 set_bit(t, input_dev->keybit);
386 386
387 input_register_device(grip->dev[i]); 387 err = input_register_device(grip->dev[i]);
388 if (err)
389 goto fail4;
388 } 390 }
389 391
390 return 0; 392 return 0;
391 393
392 fail3: for (i = 0; i < 2; i++) 394 fail4: input_free_device(grip->dev[i]);
395 fail3: while (--i >= 0)
393 if (grip->dev[i]) 396 if (grip->dev[i])
394 input_unregister_device(grip->dev[i]); 397 input_unregister_device(grip->dev[i]);
395 fail2: gameport_close(gameport); 398 fail2: gameport_close(gameport);
@@ -414,6 +417,7 @@ static void grip_disconnect(struct gameport *gameport)
414static struct gameport_driver grip_drv = { 417static struct gameport_driver grip_drv = {
415 .driver = { 418 .driver = {
416 .name = "grip", 419 .name = "grip",
420 .owner = THIS_MODULE,
417 }, 421 },
418 .description = DRIVER_DESC, 422 .description = DRIVER_DESC,
419 .connect = grip_connect, 423 .connect = grip_connect,