]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tty: n_gsm: fix DM command
authorDaniel Starke <daniel.starke@siemens.com>
Thu, 7 Jul 2022 11:32:21 +0000 (13:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:18:03 +0000 (11:18 +0200)
[ Upstream commit 2686f997e052ecc2aba8c07cbcc1645b2cd675d8 ]

n_gsm is based on the 3GPP 07.010 and its newer version is the 3GPP 27.010.
See https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=1516
The changes from 07.010 to 27.010 are non-functional. Therefore, I refer to
the newer 27.010 here. Chapter 5.3.3 defines the DM response. There exists
no DM command. However, the current implementation incorrectly sends DM as
command in case of unexpected UIH frames in gsm_queue().
Correct this behavior by always sending DM as response.

Fixes: 99551fa31543 ("tty: n_gsm line discipline")
Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
Link: https://lore.kernel.org/r/20220707113223.3685-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

index f4b5ac84022253cb544d9ed2691ec90ebba5ed9a..39b6bcdc2c55f78567807b209daad629ceaf2440 100644 (file)
@@ -1894,7 +1894,7 @@ static void gsm_queue(struct gsm_mux *gsm)
                        goto invalid;
 #endif
                if (dlci == NULL || dlci->state != DLCI_OPEN) {
-                       gsm_command(gsm, address, DM|PF);
+                       gsm_response(gsm, address, DM|PF);
                        return;
                }
                dlci->data(dlci, gsm->buf, gsm->len);