diff options
Diffstat (limited to 'drivers/input/evdev.c')
| -rw-r--r-- | drivers/input/evdev.c | 6 | 
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 99562cee827..b32984bc516 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -124,6 +124,7 @@ static void evdev_free(struct device *dev)  {  	struct evdev *evdev = container_of(dev, struct evdev, dev); +	input_put_device(evdev->handle.dev);  	kfree(evdev);  } @@ -853,9 +854,6 @@ static void evdev_cleanup(struct evdev *evdev)  	evdev_hangup(evdev);  	evdev_remove_chrdev(evdev); -	if (evdev->grab) -		evdev_ungrab(evdev, evdev->grab); -  	/* evdev is marked dead so no one else accesses evdev->open */  	if (evdev->open) {  		input_flush_device(handle, NULL); @@ -896,7 +894,7 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,  	evdev->exist = 1;  	evdev->minor = minor; -	evdev->handle.dev = dev; +	evdev->handle.dev = input_get_device(dev);  	evdev->handle.name = evdev->name;  	evdev->handle.handler = handler;  	evdev->handle.private = evdev;  |