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

Commit 4ea20639 authored by Al Viro's avatar Al Viro Committed by Samuel Ortiz
Browse files

nfc: fix get_unaligned_...() misuses



* if a local variable of type uint16_t is unaligned, your compiler is FUBAR
* the whole point of get_unaligned_... is to avoid memcpy + ..._to_cpu().
  Using it *after* memcpy() (into aligned object, no less) is pointless.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 8b55d758
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -281,12 +281,11 @@ static int process_state_fw_dnld(struct nfcmrvl_private *priv,
			return -EINVAL;
			return -EINVAL;
		}
		}
		skb_pull(skb, 1);
		skb_pull(skb, 1);
		memcpy(&len, skb->data, 2);
		len = get_unaligned_le16(skb->data);
		skb_pull(skb, 2);
		skb_pull(skb, 2);
		comp_len = get_unaligned_le16(skb->data);
		memcpy(&comp_len, skb->data, 2);
		memcpy(&comp_len, skb->data, 2);
		skb_pull(skb, 2);
		skb_pull(skb, 2);
		len = get_unaligned_le16(&len);
		comp_len = get_unaligned_le16(&comp_len);
		if (((~len) & 0xFFFF) != comp_len) {
		if (((~len) & 0xFFFF) != comp_len) {
			nfc_err(priv->dev, "bad len complement: %x %x %x",
			nfc_err(priv->dev, "bad len complement: %x %x %x",
				len, comp_len, (~len & 0xFFFF));
				len, comp_len, (~len & 0xFFFF));
+1 −1
Original line number Original line Diff line number Diff line
@@ -126,7 +126,7 @@ static int nxp_nci_i2c_fw_read(struct nxp_nci_i2c_phy *phy,
		goto fw_read_exit;
		goto fw_read_exit;
	}
	}


	frame_len = (get_unaligned_be16(&header) & NXP_NCI_FW_FRAME_LEN_MASK) +
	frame_len = (be16_to_cpu(header) & NXP_NCI_FW_FRAME_LEN_MASK) +
		    NXP_NCI_FW_CRC_LEN;
		    NXP_NCI_FW_CRC_LEN;


	*skb = alloc_skb(NXP_NCI_FW_HDR_LEN + frame_len, GFP_KERNEL);
	*skb = alloc_skb(NXP_NCI_FW_HDR_LEN + frame_len, GFP_KERNEL);