diff options
Diffstat (limited to 'drivers/input/input.c')
| -rw-r--r-- | drivers/input/input.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index c04469928925..e75d015024a1 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -1734,6 +1734,7 @@ EXPORT_SYMBOL_GPL(input_class);   */  struct input_dev *input_allocate_device(void)  { +	static atomic_t input_no = ATOMIC_INIT(0);  	struct input_dev *dev;  	dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); @@ -1743,9 +1744,13 @@ struct input_dev *input_allocate_device(void)  		device_initialize(&dev->dev);  		mutex_init(&dev->mutex);  		spin_lock_init(&dev->event_lock); +		init_timer(&dev->timer);  		INIT_LIST_HEAD(&dev->h_list);  		INIT_LIST_HEAD(&dev->node); +		dev_set_name(&dev->dev, "input%ld", +			     (unsigned long) atomic_inc_return(&input_no) - 1); +  		__module_get(THIS_MODULE);  	} @@ -2019,7 +2024,6 @@ static void devm_input_device_unregister(struct device *dev, void *res)   */  int input_register_device(struct input_dev *dev)  { -	static atomic_t input_no = ATOMIC_INIT(0);  	struct input_devres *devres = NULL;  	struct input_handler *handler;  	unsigned int packet_size; @@ -2059,7 +2063,6 @@ int input_register_device(struct input_dev *dev)  	 * If delay and period are pre-set by the driver, then autorepeating  	 * is handled by the driver itself and we don't do it in input.c.  	 */ -	init_timer(&dev->timer);  	if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {  		dev->timer.data = (long) dev;  		dev->timer.function = input_repeat_key; @@ -2073,9 +2076,6 @@ int input_register_device(struct input_dev *dev)  	if (!dev->setkeycode)  		dev->setkeycode = input_default_setkeycode; -	dev_set_name(&dev->dev, "input%ld", -		     (unsigned long) atomic_inc_return(&input_no) - 1); -  	error = device_add(&dev->dev);  	if (error)  		goto err_free_vals;  |