diff options
authorStefan Agner <>2018-08-28 09:47:39 +0200
committerMarcel Ziswiler <>2018-09-27 18:44:32 +0200
commit4f5df6df46d02b8fe23593461c003f689bd4dc4c (patch)
parent9a787b35584bca160e430bc130c98dad7f642427 (diff)
tty: serial: lpuart: avoid leaking struct tty_structColibri-VF_LXDE-Image_2.8b4.129-20181005
The function tty_port_tty_get() gets a reference to the tty. Since the code is not using tty_port_tty_set(), the reference is kept even after closing the tty. Avoid using tty_port_tty_get() by directly access the tty instance. Since lpuart_start_rx_dma() is called from the .startup() and .set_termios() callback, it is safe to assume the tty instance is valid. Signed-off-by: Stefan Agner <> Acked-by: Marcel Ziswiler <>
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 27eb808022f1..8caef0a37c70 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -931,7 +931,8 @@ static inline int lpuart_start_rx_dma(struct lpuart_port *sport)
struct circ_buf *ring = &sport->rx_ring;
int ret, nent;
int bits, baud;
- struct tty_struct *tty = tty_port_tty_get(&sport->port.state->port);
+ struct tty_port *port = &sport->port.state->port;
+ struct tty_struct *tty = port->tty;
struct ktermios *termios = &tty->termios;
baud = tty_get_baud_rate(tty);