Commit 4d4bf995ea873cc213c5abc5402af46ef490b8fd

Authored by Julien Moutinho
Committed by Dmitry Torokhov
1 parent 20da92de8e

Input: mousedev - signal that device is writable in mousedev_poll()

The Microsoft ImPS/2 mouse protocol being bidirectionnal (sic)
one may have to write in /dev/input/mice; and that works better
if select() does not hang.

Signed-off-by: Julien Moutinho <julm+linux@savines.alpes.fr.eu.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

Showing 1 changed file with 7 additions and 2 deletions Side-by-side Diff

drivers/input/mousedev.c
... ... @@ -765,10 +765,15 @@
765 765 {
766 766 struct mousedev_client *client = file->private_data;
767 767 struct mousedev *mousedev = client->mousedev;
  768 + unsigned int mask;
768 769  
769 770 poll_wait(file, &mousedev->wait, wait);
770   - return ((client->ready || client->buffer) ? (POLLIN | POLLRDNORM) : 0) |
771   - (mousedev->exist ? 0 : (POLLHUP | POLLERR));
  771 +
  772 + mask = mousedev->exist ? POLLOUT | POLLWRNORM : POLLHUP | POLLERR;
  773 + if (client->ready || client->buffer)
  774 + mask |= POLLIN | POLLRDNORM;
  775 +
  776 + return mask;
772 777 }
773 778  
774 779 static const struct file_operations mousedev_fops = {