| From be54e7461ffdc5809b67d2aeefc1ddc9a91470c7 Mon Sep 17 00:00:00 2001 |
| From: Marcel Holtmann <marcel@holtmann.org> |
| Date: Wed, 4 Dec 2019 03:43:55 +0100 |
| Subject: HID: uhid: Fix returning EPOLLOUT from uhid_char_poll |
| |
| From: Marcel Holtmann <marcel@holtmann.org> |
| |
| commit be54e7461ffdc5809b67d2aeefc1ddc9a91470c7 upstream. |
| |
| Always return EPOLLOUT from uhid_char_poll to allow polling /dev/uhid |
| for writable state. |
| |
| Fixes: 1f9dec1e0164 ("HID: uhid: allow poll()'ing on uhid devices") |
| Signed-off-by: Marcel Holtmann <marcel@holtmann.org> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/hid/uhid.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/hid/uhid.c |
| +++ b/drivers/hid/uhid.c |
| @@ -26,6 +26,7 @@ |
| #include <linux/uhid.h> |
| #include <linux/wait.h> |
| #include <linux/uaccess.h> |
| +#include <linux/eventpoll.h> |
| |
| #define UHID_NAME "uhid" |
| #define UHID_BUFSIZE 32 |
| @@ -787,7 +788,7 @@ static unsigned int uhid_char_poll(struc |
| if (uhid->head != uhid->tail) |
| return POLLIN | POLLRDNORM; |
| |
| - return 0; |
| + return EPOLLOUT | EPOLLWRNORM; |
| } |
| |
| static const struct file_operations uhid_fops = { |