lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 590/779] tty: n_gsm: fix resource allocation order in gsm_activate_mux()
    Date
    From: Daniel Starke <daniel.starke@siemens.com>

    [ Upstream commit 7349660438603ed19282e75949561406531785a5 ]

    Within gsm_activate_mux() all timers and locks are initiated before the
    actual resource for the control channel is allocated. This can lead to race
    conditions.

    Allocate the control channel DLCI object first to avoid race conditions.

    Fixes: e1eaea46bb40 ("tty: n_gsm line discipline")
    Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
    Link: https://lore.kernel.org/r/20220701122332.2039-2-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 | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
    index 23fcb34240ac..b5ce10b0656f 100644
    --- a/drivers/tty/n_gsm.c
    +++ b/drivers/tty/n_gsm.c
    @@ -2435,6 +2435,10 @@ static int gsm_activate_mux(struct gsm_mux *gsm)
    struct gsm_dlci *dlci;
    int ret;

    + dlci = gsm_dlci_alloc(gsm, 0);
    + if (dlci == NULL)
    + return -ENOMEM;
    +
    timer_setup(&gsm->kick_timer, gsm_kick_timer, 0);
    timer_setup(&gsm->t2_timer, gsm_control_retransmit, 0);
    init_waitqueue_head(&gsm->event);
    @@ -2450,9 +2454,6 @@ static int gsm_activate_mux(struct gsm_mux *gsm)
    if (ret)
    return ret;

    - dlci = gsm_dlci_alloc(gsm, 0);
    - if (dlci == NULL)
    - return -ENOMEM;
    gsm->has_devices = true;
    gsm->dead = false; /* Tty opens are now permissible */
    return 0;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-15 21:37    [W:2.236 / U:1.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site