Skip to content

Commit 8c6ae60

Browse files
tlebgregkh
authored andcommitted
net: macb: avoid dealing with endianness in macb_set_hwaddr()
[ Upstream commit 70a5ce8 ] bp->dev->dev_addr is of type `unsigned char *`. Casting it to a u32 pointer and dereferencing implies dealing manually with endianness, which is error-prone. Replace by calls to get_unaligned_le32|le16() helpers. This was found using sparse: ⟩ make C=2 drivers/net/ethernet/cadence/macb_main.o warning: incorrect type in assignment (different base types) expected unsigned int [usertype] bottom got restricted __le32 [usertype] warning: incorrect type in assignment (different base types) expected unsigned short [usertype] top got restricted __le16 [usertype] ... Reviewed-by: Sean Anderson <[email protected]> Signed-off-by: Théo Lebrun <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 5e6b27f commit 8c6ae60

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/net/ethernet/cadence/macb_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ static void macb_set_hwaddr(struct macb *bp)
276276
u32 bottom;
277277
u16 top;
278278

279-
bottom = cpu_to_le32(*((u32 *)bp->dev->dev_addr));
279+
bottom = get_unaligned_le32(bp->dev->dev_addr);
280280
macb_or_gem_writel(bp, SA1B, bottom);
281-
top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
281+
top = get_unaligned_le16(bp->dev->dev_addr + 4);
282282
macb_or_gem_writel(bp, SA1T, top);
283283

284284
/* Clear unused address register sets */

0 commit comments

Comments
 (0)