aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/joystick/grip.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/joystick/grip.c')
-rw-r--r--drivers/input/joystick/grip.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/input/joystick/grip.c b/drivers/input/joystick/grip.c
index a936e7aedb10..20cb98ac2d79 100644
--- a/drivers/input/joystick/grip.c
+++ b/drivers/input/joystick/grip.c
@@ -192,6 +192,9 @@ static void grip_poll(struct gameport *gameport)
192 for (i = 0; i < 2; i++) { 192 for (i = 0; i < 2; i++) {
193 193
194 dev = grip->dev[i]; 194 dev = grip->dev[i];
195 if (!dev)
196 continue;
197
195 grip->reads++; 198 grip->reads++;
196 199
197 switch (grip->mode[i]) { 200 switch (grip->mode[i]) {
@@ -381,12 +384,15 @@ static int grip_connect(struct gameport *gameport, struct gameport_driver *drv)
381 if (t > 0) 384 if (t > 0)
382 set_bit(t, input_dev->keybit); 385 set_bit(t, input_dev->keybit);
383 386
384 input_register_device(grip->dev[i]); 387 err = input_register_device(grip->dev[i]);
388 if (err)
389 goto fail4;
385 } 390 }
386 391
387 return 0; 392 return 0;
388 393
389 fail3: for (i = 0; i < 2; i++) 394 fail4: input_free_device(grip->dev[i]);
395 fail3: while (--i >= 0)
390 if (grip->dev[i]) 396 if (grip->dev[i])
391 input_unregister_device(grip->dev[i]); 397 input_unregister_device(grip->dev[i]);
392 fail2: gameport_close(gameport); 398 fail2: gameport_close(gameport);
@@ -411,6 +417,7 @@ static void grip_disconnect(struct gameport *gameport)
411static struct gameport_driver grip_drv = { 417static struct gameport_driver grip_drv = {
412 .driver = { 418 .driver = {
413 .name = "grip", 419 .name = "grip",
420 .owner = THIS_MODULE,
414 }, 421 },
415 .description = DRIVER_DESC, 422 .description = DRIVER_DESC,
416 .connect = grip_connect, 423 .connect = grip_connect,