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 --- drivers/input/joystick/sidewinder.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) Index: work/drivers/input/joystick/sidewinder.c =================================================================== --- work.orig/drivers/input/joystick/sidewinder.c +++ work/drivers/input/joystick/sidewinder.c @@ -771,12 +771,15 @@ static int sw_connect(struct gameport *g 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 gamepor static struct gameport_driver sw_drv = { .driver = { .name = "sidewinder", + .owner = THIS_MODULE, }, .description = DRIVER_DESC, .connect = sw_connect,