• Linus Torvalds's avatar
    n_tty: do O_ONLCR translation as a single write · 37f81fa1
    Linus Torvalds authored
    When translating CR to CRNL in the n_tty line discipline, we did it as
    two tty_put_char() calls.  Which works, but is stupid, and has caused
    problems before too with bad interactions with the write_room() logic.
    The generic USB serial driver had that problem, for example.
    
    Now the pty layer had similar issues after being moved to the generic
    tty buffering code (in commit d945cb9c:
    "pty: Rework the pty layer to use the normal buffering logic").
    
    So stop doing the silly separate two writes, and do it as a single write
    instead.  That's what the n_tty layer already does for the space
    expansion of tabs (XTABS), and it means that we'll now always have just
    a single write for the CRNL to match the single 'tty_write_room()' test,
    which hopefully means that the next time somebody screws up buffering,
    it won't cause weeks of debugging.
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    37f81fa1
n_tty.c 50.8 KB