• Joe Peterson's avatar
    n_tty: Fix hanfling of buffer full corner cases · acc71bba
    Joe Peterson authored
    Fix the handling of input characters when the tty buffer is full or nearly
    full.  This includes tests that are done in n_tty_receive_char() and handling
    of PARMRK.
    
    Problems with the buffer-full tests done in receive_char() caused characters to
    be lost at times when the buffer(s) filled.  Also, these full conditions
    would often only be detected with echo on, and PARMRK was not accounted for
    properly in all cases.  One symptom of these problems, in addition to lost
    characters, was early termination from unix commands like tr and cat when
    ^Q was used to break from a stopped tty with full buffers (note that breaking
    out was often previously not possible, due to the pty getting in "gridlock",
    which will be addressed in another patch).  Note space is always reserved
    at the end of the buffer for a newline (or EOF/EOL) in canonical mode.
    Signed-off-by: default avatarJoe Peterson <joe@skyrush.com>
    Signed-off-by: default avatarAlan Cox <alan@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    acc71bba
n_tty.c 51.3 KB