diff options
Diffstat (limited to 'drivers/hid/usbhid/hiddev.c')
-rw-r--r-- | drivers/hid/usbhid/hiddev.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 711c9656ec0f..87bd64959a91 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c | |||
@@ -361,10 +361,6 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun | |||
361 | prepare_to_wait(&list->hiddev->wait, &wait, TASK_INTERRUPTIBLE); | 361 | prepare_to_wait(&list->hiddev->wait, &wait, TASK_INTERRUPTIBLE); |
362 | 362 | ||
363 | while (list->head == list->tail) { | 363 | while (list->head == list->tail) { |
364 | if (file->f_flags & O_NONBLOCK) { | ||
365 | retval = -EAGAIN; | ||
366 | break; | ||
367 | } | ||
368 | if (signal_pending(current)) { | 364 | if (signal_pending(current)) { |
369 | retval = -ERESTARTSYS; | 365 | retval = -ERESTARTSYS; |
370 | break; | 366 | break; |
@@ -373,6 +369,10 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun | |||
373 | retval = -EIO; | 369 | retval = -EIO; |
374 | break; | 370 | break; |
375 | } | 371 | } |
372 | if (file->f_flags & O_NONBLOCK) { | ||
373 | retval = -EAGAIN; | ||
374 | break; | ||
375 | } | ||
376 | 376 | ||
377 | /* let O_NONBLOCK tasks run */ | 377 | /* let O_NONBLOCK tasks run */ |
378 | mutex_unlock(&list->thread_lock); | 378 | mutex_unlock(&list->thread_lock); |