Input: serio_raw - ensure we don't block in non-blocking read
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 21 Apr 2012 05:33:08 +0000 (22:33 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 21 Apr 2012 06:11:01 +0000 (23:11 -0700)
commit486c8aba39e5f194519cd5c0e85e5d1de8b74b03
treef82d9745cd40b94dfa4b3107e7c33c5224d69c77
parent71f3d070a309504cdfef87b9e98836395b75ae0e
Input: serio_raw - ensure we don't block in non-blocking read

Avoid calling wait_event_interruptible() if client requested non-blocking
read, since it is not guaranteed that another thread will not consume
event after we checked if serio_raw->head != serio_raw->tail.

Also ensure we do not return 0 but keep waiting instead in blocking case,
when another thread steals "our" byte.

Reviewed-by: David Herrmann <dh.herrmann@googlemail.com>
Reviewed-by: Che-Liang Chiou <clchiou@chromium.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/serio/serio_raw.c