提交 184a3b2c 编写于 作者: A Al Viro 提交者: David S. Miller

hostap: don't mess with mixed-endian even for internal skb queues

Just leave hfa384x_info_frame as-is, don't convert in place.
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 8a9faf3c
...@@ -2448,18 +2448,16 @@ static void prism2_info(local_info_t *local) ...@@ -2448,18 +2448,16 @@ static void prism2_info(local_info_t *local)
goto out; goto out;
} }
le16_to_cpus(&info.len); left = (le16_to_cpu(info.len) - 1) * 2;
le16_to_cpus(&info.type);
left = (info.len - 1) * 2;
if (info.len & 0x8000 || info.len == 0 || left > 2060) { if (info.len & cpu_to_le16(0x8000) || info.len == 0 || left > 2060) {
/* data register seems to give 0x8000 in some error cases even /* data register seems to give 0x8000 in some error cases even
* though busy bit is not set in offset register; * though busy bit is not set in offset register;
* in addition, length must be at least 1 due to type field */ * in addition, length must be at least 1 due to type field */
spin_unlock(&local->baplock); spin_unlock(&local->baplock);
printk(KERN_DEBUG "%s: Received info frame with invalid " printk(KERN_DEBUG "%s: Received info frame with invalid "
"length 0x%04x (type 0x%04x)\n", dev->name, info.len, "length 0x%04x (type 0x%04x)\n", dev->name,
info.type); le16_to_cpu(info.len), le16_to_cpu(info.type));
goto out; goto out;
} }
...@@ -2476,8 +2474,8 @@ static void prism2_info(local_info_t *local) ...@@ -2476,8 +2474,8 @@ static void prism2_info(local_info_t *local)
{ {
spin_unlock(&local->baplock); spin_unlock(&local->baplock);
printk(KERN_WARNING "%s: Info frame read failed (fid=0x%04x, " printk(KERN_WARNING "%s: Info frame read failed (fid=0x%04x, "
"len=0x%04x, type=0x%04x\n", "len=0x%04x, type=0x%04x\n", dev->name, fid,
dev->name, fid, info.len, info.type); le16_to_cpu(info.len), le16_to_cpu(info.type));
dev_kfree_skb(skb); dev_kfree_skb(skb);
goto out; goto out;
} }
......
...@@ -373,7 +373,7 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb) ...@@ -373,7 +373,7 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb)
buf = skb->data + sizeof(*info); buf = skb->data + sizeof(*info);
left = skb->len - sizeof(*info); left = skb->len - sizeof(*info);
switch (info->type) { switch (le16_to_cpu(info->type)) {
case HFA384X_INFO_COMMTALLIES: case HFA384X_INFO_COMMTALLIES:
prism2_info_commtallies(local, buf, left); prism2_info_commtallies(local, buf, left);
break; break;
...@@ -395,7 +395,8 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb) ...@@ -395,7 +395,8 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb)
#ifndef PRISM2_NO_DEBUG #ifndef PRISM2_NO_DEBUG
default: default:
PDEBUG(DEBUG_EXTRA, "%s: INFO - len=%d type=0x%04x\n", PDEBUG(DEBUG_EXTRA, "%s: INFO - len=%d type=0x%04x\n",
local->dev->name, info->len, info->type); local->dev->name, le16_to_cpu(info->len),
le16_to_cpu(info->type));
PDEBUG(DEBUG_EXTRA, "Unknown info frame:"); PDEBUG(DEBUG_EXTRA, "Unknown info frame:");
for (i = 0; i < (left < 100 ? left : 100); i++) for (i = 0; i < (left < 100 ? left : 100); i++)
PDEBUG2(DEBUG_EXTRA, " %02x", buf[i]); PDEBUG2(DEBUG_EXTRA, " %02x", buf[i]);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册