Input: serio_raw - return proper result when serio_raw_write fails
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:57 +0000 (23:13 -0800)
If serio_raw_write was always returning number of bytes successfully
sent to serio port and never signalled error condition to the caller.
Change it so that for completely failed transfers appropriate error
code returned to the caller (partially successful writes still return
number of bytes transferred).

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

index f6c83e9ecff6bd172b3344738485da94c8abe5bf..8250299fd64ff37d78d97910a702f00710157532 100644 (file)
@@ -224,7 +224,7 @@ static ssize_t serio_raw_write(struct file *file, const char __user *buffer,
 
 out:
        mutex_unlock(&serio_raw_mutex);
-       return written;
+       return written ?: retval;
 }
 
 static unsigned int serio_raw_poll(struct file *file, poll_table *wait)