提交 be7a7411 编写于 作者: K Ken Mills 提交者: Greg Kroah-Hartman

n_gsm: Fix message length handling when building header

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: NKen Mills <ken.k.mills@intel.com>
Signed-off-by: NAlan Cox <alan@linux.intel.com>
Cc: stable@kernel.org
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 cf7d7e5a
...@@ -716,8 +716,8 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg) ...@@ -716,8 +716,8 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg)
if (msg->len < 128) if (msg->len < 128)
*--dp = (msg->len << 1) | EA; *--dp = (msg->len << 1) | EA;
else { else {
*--dp = ((msg->len & 127) << 1) | EA; *--dp = (msg->len >> 7); /* bits 7 - 15 */
*--dp = (msg->len >> 6) & 0xfe; *--dp = (msg->len & 127) << 1; /* bits 0 - 6 */
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册