diff options
author | Paul Mackerras <paulus@samba.org> | 2006-02-07 10:43:36 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-02-07 10:43:36 +1100 |
commit | 6cb6524d90b6e5497e79a1474bdb2f26755d1c02 (patch) | |
tree | fd475ac8f57a6bd39c976056324d1bc79d11b4c9 /drivers/input/joystick/sidewinder.c | |
parent | 837e9594fc3cb9a06bddd7ecf66151334a2e13d2 (diff) | |
parent | 410c05427a69f53851637ccb85c2212131409fbd (diff) |
Merge ../linux-2.6
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 78dd163cd70..2b2ec1057de 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) sprintf(sw->name, "Microsoft SideWinder %s", sw_name[sw->type]); sprintf(sw->phys[i], "%s/input%d", gameport->phys, i); - input_dev = input_allocate_device(); + sw->dev[i] = input_dev = input_allocate_device(); if (!input_dev) { err = -ENOMEM; goto fail3; @@ -771,12 +771,15 @@ static int sw_connect(struct gameport *gameport, struct gameport_driver *drv) dbg("%s%s [%d-bit id %d data %d]\n", sw->name, comment, m, l, k); - input_register_device(sw->dev[i]); + err = input_register_device(sw->dev[i]); + if (err) + goto fail4; } return 0; - fail3: while (--i >= 0) + fail4: input_free_device(sw->dev[i]); + fail3: while (--i >= 0) input_unregister_device(sw->dev[i]); fail2: gameport_close(gameport); fail1: gameport_set_drvdata(gameport, NULL); @@ -801,6 +804,7 @@ static void sw_disconnect(struct gameport *gameport) static struct gameport_driver sw_drv = { .driver = { .name = "sidewinder", + .owner = THIS_MODULE, }, .description = DRIVER_DESC, .connect = sw_connect, |