lkml.org 
[lkml]   [2022]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 49/78] tty: n_gsm: fix missing explicit ldisc flush
    Date
    From: Daniel Starke <daniel.starke@siemens.com>

    commit 17eac652028501df7ea296b1d9b9c134db262b7d upstream.

    In gsm_cleanup_mux() the muxer is closed down and all queues are removed.
    However, removing the queues is done without explicit control of the
    underlying buffers. Flush those before freeing up our queues to ensure
    that all outgoing queues are cleared consistently. Otherwise, a new mux
    connection establishment attempt may time out while the underlying tty is
    still busy sending out the remaining data from the previous connection.

    Fixes: e1eaea46bb40 ("tty: n_gsm line discipline")
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
    Link: https://lore.kernel.org/r/20220414094225.4527-10-daniel.starke@siemens.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/tty/n_gsm.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/tty/n_gsm.c
    +++ b/drivers/tty/n_gsm.c
    @@ -2113,6 +2113,7 @@ static void gsm_cleanup_mux(struct gsm_m
    gsm_dlci_release(gsm->dlci[i]);
    mutex_unlock(&gsm->mutex);
    /* Now wipe the queues */
    + tty_ldisc_flush(gsm->tty);
    list_for_each_entry_safe(txq, ntxq, &gsm->tx_list, list)
    kfree(txq);
    INIT_LIST_HEAD(&gsm->tx_list);

    \
     
     \ /
      Last update: 2022-05-10 15:29    [W:4.024 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site