diff options
author | 2006-01-29 21:51:56 -0500 | |
---|---|---|
committer | 2006-01-29 21:51:56 -0500 | |
commit | 07cf779c0098fd0007d2348e1cf948cc07bfe096 (patch) | |
tree | cd8a76b447f94b42597149fc11db9899c077663d /drivers/input | |
parent | Input: sidewinder - fix an oops (diff) | |
download | linux-07cf779c0098fd0007d2348e1cf948cc07bfe096.tar.gz linux-07cf779c0098fd0007d2348e1cf948cc07bfe096.tar.bz2 linux-07cf779c0098fd0007d2348e1cf948cc07bfe096.zip |
Input: sidewinder - 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/sidewinder.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c index 03f9e7ed0304..2b2ec1057dee 100644 --- a/drivers/input/joystick/sidewinder.c +++ b/drivers/input/joystick/sidewinder.c @@ -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, |