Fix characters being dropped by n_tty_write() due to a failure to check the return value of tty_put_char() in do_output_char(). Characters are currently being dropped by write if a tty driver claims to have write room available, but still fails to buffer any data (e.g. if a driver without internal buffer is run-time suspended between write_room and write). Note that process_output_block() handles such a failed buffer attempt, but that the consecutive process_output() of the first character will drop it. This could lead to the whole buffer being silently dropped as the remainder of the buffer is processed in a loop. Signed-off-by: Johan Hovold <jhovold@xxxxxxxxx> --- drivers/tty/n_tty.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index d15624c1b751..d22a2d8f1cb7 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -513,7 +513,9 @@ static int do_output_char(unsigned char c, struct tty_struct *tty, int space) break; } - tty_put_char(tty, c); + if (!tty_put_char(tty, c)) + return -1; + return 1; } -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html