Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0

From: Greg KH
Date: Wed Jun 16 2021 - 02:20:09 EST


On Wed, Jun 16, 2021 at 10:56:39AM +0800, Zhenguo Zhao wrote:
> From: Zhenguo Zhao <zhenguo.zhao1@xxxxxxxxxx>
>
> When set initiator=0,switch to Responder,gsmld received dlci SABM/DISC
> frame,CR bit should be 0 by calculation.
>
> receive DLC0 SABM CMD:
> [69.740263] c1 gsmld_receive: 00000000: f9 03 3f 01 1c f9
> [69.893247] c1 gsm_queue cr:1
> [69.897629] c1 <-- 0) C: SABM(P)
> [69.907516] c1 gsm_queue cr:0

Why is this changelog text indented by tabs?

And I do not understand the changelog text here, what is this showing?
What is wrong here and what is being fixed?

> Signed-off-by: Zhenguo Zhao <zhenguo.zhao1@xxxxxxxxxx>

Does this fix a long-standing issue? Should a "Fixes:" tag go here? If
so, please provide it.

Should it also be sent to stable kernels?

> ---
> drivers/tty/n_gsm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
> index 5fea02c..becca2c 100644
> --- a/drivers/tty/n_gsm.c
> +++ b/drivers/tty/n_gsm.c
> @@ -1779,7 +1779,7 @@ static void gsm_queue(struct gsm_mux *gsm)
>
> switch (gsm->control) {
> case SABM|PF:
> - if (cr == 0)
> + if (cr == 1)

How did the original code ever work properly?

> goto invalid;
> if (dlci == NULL)
> dlci = gsm_dlci_alloc(gsm, address);
> @@ -1793,7 +1793,7 @@ static void gsm_queue(struct gsm_mux *gsm)
> }
> break;
> case DISC|PF:
> - if (cr == 0)
> + if (cr == 1)

Same here, how did this ever work? Are you sure this change is correct?

thanks,

greg k-h