Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 184a3b2c authored by Al Viro's avatar Al Viro Committed by David S. Miller
Browse files

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: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8a9faf3c
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -2448,18 +2448,16 @@ static void prism2_info(local_info_t *local)
		goto out;
	}

	le16_to_cpus(&info.len);
	le16_to_cpus(&info.type);
	left = (info.len - 1) * 2;
	left = (le16_to_cpu(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
		 * though busy bit is not set in offset register;
		 * in addition, length must be at least 1 due to type field */
		spin_unlock(&local->baplock);
		printk(KERN_DEBUG "%s: Received info frame with invalid "
		       "length 0x%04x (type 0x%04x)\n", dev->name, info.len,
		       info.type);
		       "length 0x%04x (type 0x%04x)\n", dev->name,
		       le16_to_cpu(info.len), le16_to_cpu(info.type));
		goto out;
	}

@@ -2476,8 +2474,8 @@ static void prism2_info(local_info_t *local)
	{
		spin_unlock(&local->baplock);
		printk(KERN_WARNING "%s: Info frame read failed (fid=0x%04x, "
		       "len=0x%04x, type=0x%04x\n",
		       dev->name, fid, info.len, info.type);
		       "len=0x%04x, type=0x%04x\n", dev->name, fid,
		       le16_to_cpu(info.len), le16_to_cpu(info.type));
		dev_kfree_skb(skb);
		goto out;
	}
+3 −2
Original line number Diff line number Diff line
@@ -373,7 +373,7 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb)
	buf = skb->data + sizeof(*info);
	left = skb->len - sizeof(*info);

	switch (info->type) {
	switch (le16_to_cpu(info->type)) {
	case HFA384X_INFO_COMMTALLIES:
		prism2_info_commtallies(local, buf, left);
		break;
@@ -395,7 +395,8 @@ void hostap_info_process(local_info_t *local, struct sk_buff *skb)
#ifndef PRISM2_NO_DEBUG
	default:
		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:");
		for (i = 0; i < (left < 100 ? left : 100); i++)
			PDEBUG2(DEBUG_EXTRA, " %02x", buf[i]);