Skip to content

Commit

Permalink
n_gsm: Fix message length handling when building header
Browse files Browse the repository at this point in the history
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>
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Ken Mills authored and Greg Kroah-Hartman committed Dec 16, 2010
1 parent cf7d7e5 commit be7a741
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/tty/n_gsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 & 127) << 1) | EA;
*--dp = (msg->len >> 6) & 0xfe;
*--dp = (msg->len >> 7); /* bits 7 - 15 */
*--dp = (msg->len & 127) << 1; /* bits 0 - 6 */
}
}

Expand Down

0 comments on commit be7a741

Please sign in to comment.