aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/mousedev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/mousedev.c')
-rw-r--r--drivers/input/mousedev.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index f34b22bce4ff..d8f68f77007b 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -57,7 +57,6 @@ struct mousedev_hw_data {
57}; 57};
58 58
59struct mousedev { 59struct mousedev {
60 int exist;
61 int open; 60 int open;
62 int minor; 61 int minor;
63 struct input_handle handle; 62 struct input_handle handle;
@@ -66,6 +65,7 @@ struct mousedev {
66 spinlock_t client_lock; /* protects client_list */ 65 spinlock_t client_lock; /* protects client_list */
67 struct mutex mutex; 66 struct mutex mutex;
68 struct device dev; 67 struct device dev;
68 bool exist;
69 69
70 struct list_head mixdev_node; 70 struct list_head mixdev_node;
71 int mixdev_open; 71 int mixdev_open;
@@ -765,10 +765,15 @@ static unsigned int mousedev_poll(struct file *file, poll_table *wait)
765{ 765{
766 struct mousedev_client *client = file->private_data; 766 struct mousedev_client *client = file->private_data;
767 struct mousedev *mousedev = client->mousedev; 767 struct mousedev *mousedev = client->mousedev;
768 unsigned int mask;
768 769
769 poll_wait(file, &mousedev->wait, wait); 770 poll_wait(file, &mousedev->wait, wait);
770 return ((client->ready || client->buffer) ? (POLLIN | POLLRDNORM) : 0) | 771
771 (mousedev->exist ? 0 : (POLLHUP | POLLERR)); 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
774static const struct file_operations mousedev_fops = { 779static const struct file_operations mousedev_fops = {
@@ -802,7 +807,7 @@ static void mousedev_remove_chrdev(struct mousedev *mousedev)
802static void mousedev_mark_dead(struct mousedev *mousedev) 807static void mousedev_mark_dead(struct mousedev *mousedev)
803{ 808{
804 mutex_lock(&mousedev->mutex); 809 mutex_lock(&mousedev->mutex);
805 mousedev->exist = 0; 810 mousedev->exist = false;
806 mutex_unlock(&mousedev->mutex); 811 mutex_unlock(&mousedev->mutex);
807} 812}
808 813
@@ -862,7 +867,7 @@ static struct mousedev *mousedev_create(struct input_dev *dev,
862 dev_set_name(&mousedev->dev, "mouse%d", minor); 867 dev_set_name(&mousedev->dev, "mouse%d", minor);
863 868
864 mousedev->minor = minor; 869 mousedev->minor = minor;
865 mousedev->exist = 1; 870 mousedev->exist = true;
866 mousedev->handle.dev = input_get_device(dev); 871 mousedev->handle.dev = input_get_device(dev);
867 mousedev->handle.name = dev_name(&mousedev->dev); 872 mousedev->handle.name = dev_name(&mousedev->dev);
868 mousedev->handle.handler = handler; 873 mousedev->handle.handler = handler;