diff options
Diffstat (limited to 'drivers/hid/hidraw.c')
-rw-r--r-- | drivers/hid/hidraw.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 0c6639ea03dd..cdd136942bca 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/major.h> | 30 | #include <linux/major.h> |
31 | #include <linux/hid.h> | 31 | #include <linux/hid.h> |
32 | #include <linux/mutex.h> | 32 | #include <linux/mutex.h> |
33 | #include <linux/sched.h> | ||
33 | #include <linux/smp_lock.h> | 34 | #include <linux/smp_lock.h> |
34 | 35 | ||
35 | #include <linux/hidraw.h> | 36 | #include <linux/hidraw.h> |
@@ -47,10 +48,9 @@ static ssize_t hidraw_read(struct file *file, char __user *buffer, size_t count, | |||
47 | char *report; | 48 | char *report; |
48 | DECLARE_WAITQUEUE(wait, current); | 49 | DECLARE_WAITQUEUE(wait, current); |
49 | 50 | ||
50 | while (ret == 0) { | 51 | mutex_lock(&list->read_mutex); |
51 | |||
52 | mutex_lock(&list->read_mutex); | ||
53 | 52 | ||
53 | while (ret == 0) { | ||
54 | if (list->head == list->tail) { | 54 | if (list->head == list->tail) { |
55 | add_wait_queue(&list->hidraw->wait, &wait); | 55 | add_wait_queue(&list->hidraw->wait, &wait); |
56 | set_current_state(TASK_INTERRUPTIBLE); | 56 | set_current_state(TASK_INTERRUPTIBLE); |