Input: serio_raw - really signal HUP upon disconnect
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 10 Jan 2012 08:45:12 +0000 (00:45 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 11 Jan 2012 07:13:21 +0000 (23:13 -0800)
Commit 8c1c10d5706bbb3b41cb4a5578339d67d3eeffc2 attempted to signal
POLLHUP | POLLERR condition when polling disconnected device,
unfortunately it did not do it quite correctly.

Reported-by: Che-Liang Chiou <clchiou@chromium.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/serio/serio_raw.c

index ca78a890c75dbbc861bdf737b9de0a42b5aa7bab..f6c83e9ecff6bd172b3344738485da94c8abe5bf 100644 (file)
@@ -237,9 +237,9 @@ static unsigned int serio_raw_poll(struct file *file, poll_table *wait)
 
        mask = serio_raw->dead ? POLLHUP | POLLERR : POLLOUT | POLLWRNORM;
        if (serio_raw->head != serio_raw->tail)
-               return POLLIN | POLLRDNORM;
+               mask |= POLLIN | POLLRDNORM;
 
-       return 0;
+       return mask;
 }
 
 static const struct file_operations serio_raw_fops = {