summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorKen Mills <ken.k.mills@intel.com>2010-12-13 15:27:27 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2011-01-07 13:58:37 -0800
commitbd7e2ae3d4fe121c09a12ad1917b5d8e0200d95f (patch)
tree6cbfb50e64791c1df7215a7cac24bdeb8f663da9 /drivers/char
parent2f968c28dfa000be33a2c880b36553d38c7aabaa (diff)
n_gsm: Fix message length handling when building header
commit be7a7411d63ccad165d66fe8e0b11b2ee336159b upstream. Fix message length handling when building header When the message length is greater than 127, the length field in the header is built incorrectly. According to the spec, when the length is less than 128 the length field is a single byte formatted as: bbbbbbb1. When it is greater than 127 then the field is two bytes of the format: bbbbbbb0 bbbbbbbb. Signed-off-by: Ken Mills <ken.k.mills@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/n_gsm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/char/n_gsm.c b/drivers/char/n_gsm.c
index 04ef3ef0a422..bc0aef65e643 100644
--- a/drivers/char/n_gsm.c
+++ b/drivers/char/n_gsm.c
@@ -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 >> 7); /* bits 7 - 15 */
+ *--dp = (msg->len & 127) << 1; /* bits 0 - 6 */
}
}