浏览代码

Input: fix input module refcounting

Now that input_free_device is basically an alias for input_put_device
we need to acquire a reference to input module right when we allocate
device because input_dev_release releases reference to input module
unconditionally.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Dmitry Torokhov 18 年之前
父节点
当前提交
655816e498
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/input/input.c

+ 2 - 2
drivers/input/input.c

@@ -912,6 +912,8 @@ struct input_dev *input_allocate_device(void)
 		mutex_init(&dev->mutex);
 		INIT_LIST_HEAD(&dev->h_list);
 		INIT_LIST_HEAD(&dev->node);
+
+		__module_get(THIS_MODULE);
 	}
 
 	return dev;
@@ -985,8 +987,6 @@ int input_register_device(struct input_dev *dev)
 	if (error)
 		goto fail3;
 
-	__module_get(THIS_MODULE);
-
 	path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL);
 	printk(KERN_INFO "input: %s as %s\n",
 		dev->name ? dev->name : "Unspecified device", path ? path : "N/A");