lkml.org 
[lkml]   [2018]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 085/137] tty: serial: lpuart: avoid leaking struct tty_struct
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Stefan Agner <stefan@agner.ch>

    commit 3216c622a24b0ebb9c159a8d1daf7f17a106b3f5 upstream.

    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.

    Cc: stable@vger.kernel.org # v4.9+
    Fixes: 5887ad43ee02 ("tty: serial: fsl_lpuart: Use cyclic DMA for Rx")
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/tty/serial/fsl_lpuart.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/drivers/tty/serial/fsl_lpuart.c
    +++ b/drivers/tty/serial/fsl_lpuart.c
    @@ -983,7 +983,8 @@ static inline int lpuart_start_rx_dma(st
    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);

    \
     
     \ /
      Last update: 2018-10-02 15:51    [W:4.258 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site