• Linus Torvalds's avatar
    pty: fix data loss when stopped (^S/^Q) · 85dfd81d
    Linus Torvalds authored
    Commit d945cb9c
    
     ("pty: Rework the pty layer to use the normal buffering
    logic") dropped the test for 'tty->stopped' in pty_write_room(), which
    then causes the n_tty line discipline thing to not throttle the data
    properly when the tty is stopped.
    
    So instead of pausing the write due to the tty being stopped, the ldisc
    layer would go ahead and push it down to the pty.  The pty write()
    routine would then refuse to take the data (because it _did_ check
    'stopped'), and the data wouldn't actually be written.
    
    This whole stopped test should eventually be moved into the tty ldisc
    layer rather than have low-level tty drivers care about these things,
    but right now the fix is to just re-instate the missing pty 'stopped'
    handling.
    Reported-and-tested-by: default avatarArtur Skawina <art.08.09@gmail.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    85dfd81d