• Chanho Park's avatar
    tty: do not set TTY_IO_ERROR flag if console port · 2a486026
    Chanho Park authored
    Since Commit 761ed4a9 ('tty: serial_core: convert uart_close to use
    tty_port_close') and Commit 4dda864d ('tty: serial_core: Fix serial
    console crash on port shutdown), a serial port which is used as
    console can be stuck when logging out if there is a remained process.
    After logged out, agetty will try to grab the serial port but it will
    be failed because the previous process did not release the port
    correctly. To fix this, TTY_IO_ERROR bit should not be enabled of
    tty_port_close if the port is console port.
    
    Reproduce step:
    - Run background processes from serial console
    $ while true; do sleep 10; done &
    
    - Log out
    $ logout
    -> Stuck
    
    - Read journal log by journalctl | tail
    Jan 28 16:07:01 ubuntu systemd[1]: Stopped Serial Getty on ttyAMA0.
    Jan 28 16:07:01 ubuntu systemd[1]: Started Serial Getty on ttyAMA0.
    Jan 28 16:07:02 ubuntu agetty[1643]: /dev/ttyAMA0: not a tty
    
    Fixes: 761ed4a9 ("tty: serial_core: convert uart_close to use tty_port_close")
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: default avatarChanho Park <parkch98@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2a486026
tty_port.c 18.1 KB