Skip to contentSkip to conversation

staging: vt6656: fix Prefer ether_addr_copy() over memcpy() if the Ethernet addresses are __aligned(2)

PATCH In review Lin Kassem 2 participants 2 messages Jan 21, 2015 Staging

lore
Share & tools
lore

Lin Kassem

author
#0 lore raw

PATCH 1/1 staging: vt6656: fix Prefer ether_addr_copy() over memcpy() if the Ethernet addresses are __aligned(2)

This patch fixes the following checkpatch.pl warning:
fix Prefer ether_addr_copy() over memcpy()
if the Ethernet addresses are __aligned(2)

Pahole showed that the 2 structs are aligned to u16

struct ieee80211_hdr {

	__le16                     frame_control;        /*     0     2 */
	__le16                     duration_id;          /*     2     2 */
	u8                         addr1[6];             /*     4     6 */
	u8                         addr2[6];             /*    10     6 */
	u8                         addr3[6];             /*    16     6 */
	__le16                     seq_ctrl;             /*    22     2 */
	u8                         addr4[6];             /*    24     6 */
	/* size: 30, cachelines: 1, members: 7 */
	/* last cacheline: 30 bytes */
};

struct vnt_mic_hdr {

	u8                         id;                   /*     0     1 */
	u8                         tx_priority;          /*     1     1 */
	u8                         mic_addr2[6];         /*     2     6 */
	u8                         ccmp_pn[6];           /*     8     6 */
	__be16                     payload_len;          /*    14     2 */
	__be16                     hlen;                 /*    16     2 */
	__le16                     frame_control;        /*    18     2 */
	u8                         addr1[6];             /*    20     6 */
	u8                         addr2[6];             /*    26     6 */
	u8                         addr3[6];             /*    32     6 */
	__le16                     seq_ctrl;             /*    38     2 */
	u8                         addr4[6];             /*    40     6 */
	u16                        packing;              /*    46     2 */
	/* size: 48, cachelines: 1, members: 13 */
	/* last cacheline: 48 bytes */
};
---
 drivers/staging/vt6656/rxtx.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/vt6656/rxtx.c +1 -1
index bb6a4d4..c202147 100644
@@ -749,7 +749,7 @@ static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context,
 		else
 			mic_hdr->hlen = cpu_to_be16(22);
 
-		memcpy(mic_hdr->addr1, hdr->addr1, ETH_ALEN);
+		ether_addr_copy(mic_hdr->addr1, hdr->addr1);
 		memcpy(mic_hdr->addr2, hdr->addr2, ETH_ALEN);
 		memcpy(mic_hdr->addr3, hdr->addr3, ETH_ALEN);
 
Signature · 1 line
1.7.9.5
#1 lore raw
Quoted 5 lines · Lin Kassem

This patch fixes the following checkpatch.pl warning:
fix Prefer ether_addr_copy() over memcpy()
if the Ethernet addresses are __aligned(2)

Pahole showed that the 2 structs are aligned to u16

[]

drivers/staging/vt6656/rxtx.c

Quoted 1 line
drivers/staging/vt6656/rxtx.c +0 -0

[]

drivers/staging/vt6656/rxtx.c static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context, · line 755

Quoted 9 lines
drivers/staging/vt6656/rxtx.c +1 -1
@@ -749,7 +749,7 @@ static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context,
 		else
 			mic_hdr->hlen = cpu_to_be16(22);
 
-		memcpy(mic_hdr->addr1, hdr->addr1, ETH_ALEN);
+		ether_addr_copy(mic_hdr->addr1, hdr->addr1);
 		memcpy(mic_hdr->addr2, hdr->addr2, ETH_ALEN);
 		memcpy(mic_hdr->addr3, hdr->addr3, ETH_ALEN);
 

Why would you modify only one of these?
Please modify all 4.