n_gsm: Fix length handling
authorKen Mills <[email protected]>
Thu, 4 Nov 2010 15:16:42 +0000 (15:16 +0000)
committerGreg Kroah-Hartman <[email protected]>
Thu, 11 Nov 2010 19:06:09 +0000 (11:06 -0800)
If the mux is configured with a large mru/mtu the existing code gets the
byte ordering wrong for the header.

Signed-off-by: Ken Mills <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
drivers/tty/n_gsm.c

index 7f79044ae9969656b2a525aa57e7006fb4774ec9..81b46585edf797561828f2adfac2e598543690f3 100644 (file)
@@ -716,8 +716,8 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg)
                if (msg->len < 128)
                        *--dp = (msg->len << 1) | EA;
                else {
-                       *--dp = (msg->len >> 6) | EA;
-                       *--dp = (msg->len & 127) << 1;
+                       *--dp = ((msg->len & 127) << 1) | EA;
+                       *--dp = (msg->len >> 6) & 0xfe;
                }
        }