9
0
Fork 0

input: usb_kbd: skip poll on -EAGAIN error

Skip poll if either usb_submit_int_msg() or usb_get_report()
returned -EAGAIN.

Signed-off-by: Peter Mamonov <pmamonov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Peter Mamonov 2015-10-14 13:15:48 +03:00 committed by Sascha Hauer
parent 16f7b35138
commit 6b0cbf2059
1 changed files with 5 additions and 2 deletions

View File

@ -274,7 +274,7 @@ static void usb_kbd_poll(struct poller_struct *poller)
struct usb_kbd_pdata *data = container_of(poller,
struct usb_kbd_pdata, poller);
struct usb_device *usbdev = data->usbdev;
int diff, tout;
int diff, tout, ret;
if (data->lock)
return;
@ -284,7 +284,10 @@ static void usb_kbd_poll(struct poller_struct *poller)
goto exit;
data->last_poll = get_time_ns();
if (0 > data->do_poll(data)) {
ret = data->do_poll(data);
if (ret == -EAGAIN)
goto exit;
if (ret < 0) {
/* exit and lock forever */
dev_err(&usbdev->dev,
"usb_submit_int_msg() failed. Keyboard disconnect?\n");