summaryrefslogtreecommitdiff
path: root/drivers/tty/n_gsm.c
diff options
context:
space:
mode:
authorDaniel Starke <daniel.starke@siemens.com>2022-07-07 14:32:22 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-07-08 16:14:53 +0300
commit59ff0680ecbfec742b1e0381e7cc46b41eb06647 (patch)
tree1a42350a4d6b827ec2dfcff161e462e07af000a4 /drivers/tty/n_gsm.c
parent18a948c7d90995d127785e308fa7b701df4c499f (diff)
downloadlinux-59ff0680ecbfec742b1e0381e7cc46b41eb06647.tar.xz
tty: n_gsm: fix flow control handling in tx path
The current implementation constipates all transmission paths during flow control except for flow control frames. However, these may not be located at the beginning of the transmission queue of the control channel. Ensure that flow control frames in the transmission queue for the control channel are always handled even if constipated by skipping through other messages. Fixes: 0af021678d5d ("tty: n_gsm: fix deadlock and link starvation in outgoing data path") Signed-off-by: Daniel Starke <daniel.starke@siemens.com> Link: https://lore.kernel.org/r/20220707113223.3685-3-daniel.starke@siemens.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/n_gsm.c')
-rw-r--r--drivers/tty/n_gsm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 90060018928f..51447ccccbab 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -891,7 +891,7 @@ static int gsm_data_kick(struct gsm_mux *gsm)
/* Serialize control messages and control channel messages first */
list_for_each_entry_safe(msg, nmsg, &gsm->tx_ctrl_list, list) {
if (gsm->constipated && !gsm_is_flow_ctrl_msg(msg))
- return -EAGAIN;
+ continue;
ret = gsm_send_packet(gsm, msg);
switch (ret) {
case -ENOSPC: