[PATCH] HID read busywait fix
authorMicon, David <DMicon@pelco.com>
Sat, 20 May 2006 21:59:59 +0000 (14:59 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 21 May 2006 19:59:17 +0000 (12:59 -0700)
Make a read of a HID device block until data is available.  Without it, the
read goes into a busy-wait loop until data is available.

Cc: Greg KH <greg@kroah.com>
Acked-by: Vojtech Pavlik <vojtech@suse.cz>
Cc: Dmitry Torokhov <dtor_core@ameritech.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/usb/input/hiddev.c

index 6dd6666961787434653fcde4add8eb0e25bb2ab0..c4670e1d46545f12cdfe0ef9cdd89c106d1ca594 100644 (file)
@@ -317,6 +317,7 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
                                }
 
                                schedule();
+                               set_current_state(TASK_INTERRUPTIBLE);
                        }
 
                        set_current_state(TASK_RUNNING);