• Peter Hurley's avatar
    serial: Refactor uart_flush_buffer() from uart_close() · 479e9b94
    Peter Hurley authored
    In the context of the final tty & port close, flushing the tx
    ring buffer after the hardware has already been shutdown and
    the ring buffer freed is neither required nor desirable.
    
    uart_flush_buffer() performs 3 operations:
    1. Resets tx ring buffer indices, but the tx ring buffer has
       already been freed and the indices are reset if the port is
       re-opened.
    2. Calls uart driver's flush_buffer() method
       5 in-tree uart drivers define flush_buffer() methods:
         amba-pl011, atmel-serial, imx, serial-tegra, timbuart
       These have been refactored into the shutdown() method, if
       required.
    3. Kicks the ldisc for more writing, but this is undesirable.
       The file handle is being released; any waiting writer will
       will be kicked out by tty_release() with a warning. Further,
       the N_TTY ldisc may generate SIGIO for a file handle which
       is no longer valid.
    
    Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Laxman Dewangan <ldewangan@nvidia.com>
    Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    479e9b94
serial_core.c 71.2 KB