]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
tty: n_gsm: fix wrong DLCI release order
authorDaniel Starke <daniel.starke@siemens.com>
Thu, 14 Apr 2022 09:42:14 +0000 (02:42 -0700)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 22 Jun 2022 12:23:05 +0000 (14:23 +0200)
BugLink: https://bugs.launchpad.net/bugs/1978234
commit deefc58bafb4841df7f0a0d85d89a1c819db9743 upstream.

The current DLCI release order starts with the control channel followed by
the user channels. Reverse this order to keep the control channel open
until all user channels have been released.

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-9-daniel.starke@siemens.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/tty/n_gsm.c

index a26eba50d58e379f6e8e1887a2f9a70cbd55c4dc..fc10f500f848c76955903087c18d99330a5ebf6d 100644 (file)
@@ -2081,8 +2081,8 @@ static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc)
        /* Finish outstanding timers, making sure they are done */
        del_timer_sync(&gsm->t2_timer);
 
-       /* Free up any link layer users */
-       for (i = 0; i < NUM_DLCI; i++)
+       /* Free up any link layer users and finally the control channel */
+       for (i = NUM_DLCI - 1; i >= 0; i--)
                if (gsm->dlci[i])
                        gsm_dlci_release(gsm->dlci[i]);
        mutex_unlock(&gsm->mutex);