lkml.org 
[lkml]   [2013]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 91/99] tty_port: Fix refcounting leak in tty_port_tty_hangup()
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

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

    From: Gianluca Anzolin <gianluca@sottospazio.it>

    commit 1d9e689c934bd5ecb0f273c6c65e0655c5cfee5f upstream.

    The function tty_port_tty_hangup() could leak a reference to the tty_struct:

    struct tty_struct *tty = tty_port_tty_get(port);

    if (tty && (!check_clocal || !C_CLOCAL(tty))) {
    tty_hangup(tty);
    tty_kref_put(tty);
    }

    If tty != NULL and the second condition is false we never call tty_kref_put and
    the reference is leaked.

    Fix by always calling tty_kref_put() which accepts a NULL argument.

    The patch fixes a regression introduced by commit aa27a094.

    Acked-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Gianluca Anzolin <gianluca@sottospazio.it>
    Acked-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/tty/tty_port.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    --- a/drivers/tty/tty_port.c
    +++ b/drivers/tty/tty_port.c
    @@ -256,10 +256,9 @@ void tty_port_tty_hangup(struct tty_port
    {
    struct tty_struct *tty = tty_port_tty_get(port);

    - if (tty && (!check_clocal || !C_CLOCAL(tty))) {
    + if (tty && (!check_clocal || !C_CLOCAL(tty)))
    tty_hangup(tty);
    - tty_kref_put(tty);
    - }
    + tty_kref_put(tty);
    }
    EXPORT_SYMBOL_GPL(tty_port_tty_hangup);




    \
     
     \ /
      Last update: 2013-08-02 13:21    [W:7.361 / U:1.624 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site