lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 123/229] tty: n_gsm: fix packet re-transmission without open control channel
    Date
    From: Daniel Starke <daniel.starke@siemens.com>

    [ Upstream commit 4fae831b3a71fc5a44cc5c7d0b8c1267ee7659f5 ]

    In the current implementation control packets are re-transmitted even if
    the control channel closed down during T2. This is wrong.
    Check whether the control channel is open before re-transmitting any
    packets. Note that control channel open/close is handled by T1 and not T2
    and remains unaffected by this.

    Fixes: e1eaea46bb40 ("tty: n_gsm line discipline")
    Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
    Link: https://lore.kernel.org/r/20220701061652.39604-7-daniel.starke@siemens.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/tty/n_gsm.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
    index a838ec4f2715..62af08e5caa5 100644
    --- a/drivers/tty/n_gsm.c
    +++ b/drivers/tty/n_gsm.c
    @@ -1394,7 +1394,7 @@ static void gsm_control_retransmit(unsigned long data)
    spin_lock_irqsave(&gsm->control_lock, flags);
    ctrl = gsm->pending_cmd;
    if (ctrl) {
    - if (gsm->cretries == 0) {
    + if (gsm->cretries == 0 || !gsm->dlci[0] || gsm->dlci[0]->dead) {
    gsm->pending_cmd = NULL;
    ctrl->error = -ETIMEDOUT;
    ctrl->done = 1;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-23 11:59    [W:3.926 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site