瀏覽代碼

Input: grip - 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>
Dmitry Torokhov 19 年之前
父節點
當前提交
0399addd71
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      drivers/input/joystick/grip.c

+ 6 - 2
drivers/input/joystick/grip.c

@@ -384,12 +384,15 @@ static int grip_connect(struct gameport *gameport, struct gameport_driver *drv)
 			if (t > 0)
 			if (t > 0)
 				set_bit(t, input_dev->keybit);
 				set_bit(t, input_dev->keybit);
 
 
-		input_register_device(grip->dev[i]);
+		err = input_register_device(grip->dev[i]);
+		if (err)
+			goto fail4;
 	}
 	}
 
 
 	return 0;
 	return 0;
 
 
- fail3: for (i = 0; i < 2; i++)
+ fail4:	input_free_device(grip->dev[i]);
+ fail3:	while (--i >= 0)
 		if (grip->dev[i])
 		if (grip->dev[i])
 			input_unregister_device(grip->dev[i]);
 			input_unregister_device(grip->dev[i]);
  fail2:	gameport_close(gameport);
  fail2:	gameport_close(gameport);
@@ -414,6 +417,7 @@ static void grip_disconnect(struct gameport *gameport)
 static struct gameport_driver grip_drv = {
 static struct gameport_driver grip_drv = {
 	.driver		= {
 	.driver		= {
 		.name	= "grip",
 		.name	= "grip",
+		.owner	= THIS_MODULE,
 	},
 	},
 	.description	= DRIVER_DESC,
 	.description	= DRIVER_DESC,
 	.connect	= grip_connect,
 	.connect	= grip_connect,