mirror of
https://github.com/torvalds/linux.git
synced 2024-12-17 16:43:08 +00:00
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: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
8a9faf3cd0
commit
184a3b2c51
@ -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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
#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]);
|
||||||
|
Loading…
Reference in New Issue
Block a user