aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/hidraw.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index 7c47fc3f7b2b..1d8c0219117e 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c
@@ -57,10 +57,6 @@ static ssize_t hidraw_read(struct file *file, char __user *buffer, size_t count,
57 set_current_state(TASK_INTERRUPTIBLE); 57 set_current_state(TASK_INTERRUPTIBLE);
58 58
59 while (list->head == list->tail) { 59 while (list->head == list->tail) {
60 if (file->f_flags & O_NONBLOCK) {
61 ret = -EAGAIN;
62 break;
63 }
64 if (signal_pending(current)) { 60 if (signal_pending(current)) {
65 ret = -ERESTARTSYS; 61 ret = -ERESTARTSYS;
66 break; 62 break;
@@ -69,6 +65,10 @@ static ssize_t hidraw_read(struct file *file, char __user *buffer, size_t count,
69 ret = -EIO; 65 ret = -EIO;
70 break; 66 break;
71 } 67 }
68 if (file->f_flags & O_NONBLOCK) {
69 ret = -EAGAIN;
70 break;
71 }
72 72
73 /* allow O_NONBLOCK to work well from other threads */ 73 /* allow O_NONBLOCK to work well from other threads */
74 mutex_unlock(&list->read_mutex); 74 mutex_unlock(&list->read_mutex);