Messages in this thread |  | | Date | Fri, 11 Jul 2014 12:15:49 -0400 | From | Peter Hurley <> | Subject | Re: [PATCH tty-next 21/22] serial: core: Remove superfluous ldisc flush from uart_close() |
| |
On 06/16/2014 09:17 AM, Peter Hurley wrote: > The tty_ldisc_flush() after port hardware shutdown is unnecessary; > the ldisc flush was just performed before the hardware shutdown > in tty_port_close_start() and the ldisc will be released when > uart_close() returns (because the last port close implies the > last tty close). > > Signed-off-by: Peter Hurley <peter@hurleysoftware.com> > --- > drivers/tty/serial/serial_core.c | 3 --- > 1 file changed, 3 deletions(-) > > diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c > index 212ee07..15212d7 100644 > --- a/drivers/tty/serial/serial_core.c > +++ b/drivers/tty/serial/serial_core.c > @@ -1351,9 +1351,6 @@ static void uart_close(struct tty_struct *tty, struct file *filp) > > mutex_lock(&port->mutex); > uart_shutdown(tty, state); > - > - tty_ldisc_flush(tty); > -
This isn't exactly correct. There is a small window of time between the ldisc flush being performed in tty_port_close_start() and the subsequent stop_rx() in uart_close(). This might allow for data to be received, and a racing tty reopen to receive that stale data. Unlikely, but possible.
> tty_port_tty_set(port, NULL); > tty->closing = 0; > spin_lock_irqsave(&port->lock, flags); >
|  |