diff options
Diffstat (limited to 'drivers/input/evdev.c')
-rw-r--r-- | drivers/input/evdev.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index dee6706038aa..2ee6c7a68bdc 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c | |||
@@ -59,7 +59,8 @@ static void evdev_pass_event(struct evdev_client *client, | |||
59 | client->head &= EVDEV_BUFFER_SIZE - 1; | 59 | client->head &= EVDEV_BUFFER_SIZE - 1; |
60 | spin_unlock(&client->buffer_lock); | 60 | spin_unlock(&client->buffer_lock); |
61 | 61 | ||
62 | kill_fasync(&client->fasync, SIGIO, POLL_IN); | 62 | if (event->type == EV_SYN) |
63 | kill_fasync(&client->fasync, SIGIO, POLL_IN); | ||
63 | } | 64 | } |
64 | 65 | ||
65 | /* | 66 | /* |
@@ -277,6 +278,8 @@ static int evdev_open(struct inode *inode, struct file *file) | |||
277 | goto err_free_client; | 278 | goto err_free_client; |
278 | 279 | ||
279 | file->private_data = client; | 280 | file->private_data = client; |
281 | nonseekable_open(inode, file); | ||
282 | |||
280 | return 0; | 283 | return 0; |
281 | 284 | ||
282 | err_free_client: | 285 | err_free_client: |
@@ -512,7 +515,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd, | |||
512 | struct input_absinfo abs; | 515 | struct input_absinfo abs; |
513 | struct ff_effect effect; | 516 | struct ff_effect effect; |
514 | int __user *ip = (int __user *)p; | 517 | int __user *ip = (int __user *)p; |
515 | int i, t, u, v; | 518 | unsigned int i, t, u, v; |
516 | int error; | 519 | int error; |
517 | 520 | ||
518 | switch (cmd) { | 521 | switch (cmd) { |