diff options
Diffstat (limited to 'drivers/input/joystick/sidewinder.c')
-rw-r--r-- | drivers/input/joystick/sidewinder.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c index 78dd163cd702..2b2ec1057dee 100644 --- a/drivers/input/joystick/sidewinder.c +++ b/drivers/input/joystick/sidewinder.c | |||
@@ -736,7 +736,7 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv) | |||
736 | sprintf(sw->name, "Microsoft SideWinder %s", sw_name[sw->type]); | 736 | sprintf(sw->name, "Microsoft SideWinder %s", sw_name[sw->type]); |
737 | sprintf(sw->phys[i], "%s/input%d", gameport->phys, i); | 737 | sprintf(sw->phys[i], "%s/input%d", gameport->phys, i); |
738 | 738 | ||
739 | input_dev = input_allocate_device(); | 739 | sw->dev[i] = input_dev = input_allocate_device(); |
740 | if (!input_dev) { | 740 | if (!input_dev) { |
741 | err = -ENOMEM; | 741 | err = -ENOMEM; |
742 | goto fail3; | 742 | goto fail3; |
@@ -771,12 +771,15 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv) | |||
771 | 771 | ||
772 | dbg("%s%s [%d-bit id %d data %d]\n", sw->name, comment, m, l, k); | 772 | dbg("%s%s [%d-bit id %d data %d]\n", sw->name, comment, m, l, k); |
773 | 773 | ||
774 | input_register_device(sw->dev[i]); | 774 | err = input_register_device(sw->dev[i]); |
775 | if (err) | ||
776 | goto fail4; | ||
775 | } | 777 | } |
776 | 778 | ||
777 | return 0; | 779 | return 0; |
778 | 780 | ||
779 | fail3: while (--i >= 0) | 781 | fail4: input_free_device(sw->dev[i]); |
782 | fail3: while (--i >= 0) | ||
780 | input_unregister_device(sw->dev[i]); | 783 | input_unregister_device(sw->dev[i]); |
781 | fail2: gameport_close(gameport); | 784 | fail2: gameport_close(gameport); |
782 | fail1: gameport_set_drvdata(gameport, NULL); | 785 | fail1: gameport_set_drvdata(gameport, NULL); |
@@ -801,6 +804,7 @@ static void sw_disconnect(struct gameport *gameport) | |||
801 | static struct gameport_driver sw_drv = { | 804 | static struct gameport_driver sw_drv = { |
802 | .driver = { | 805 | .driver = { |
803 | .name = "sidewinder", | 806 | .name = "sidewinder", |
807 | .owner = THIS_MODULE, | ||
804 | }, | 808 | }, |
805 | .description = DRIVER_DESC, | 809 | .description = DRIVER_DESC, |
806 | .connect = sw_connect, | 810 | .connect = sw_connect, |