Skip to content

Commit 0c5e86a

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 6025f64 commit 0c5e86a

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
@@ -277,9 +277,9 @@ static void macb_set_hwaddr(struct macb *bp)
277277
u32 bottom;
278278
u16 top;
279279

280-
bottom = cpu_to_le32(*((u32 *)bp->dev->dev_addr));
280+
bottom = get_unaligned_le32(bp->dev->dev_addr);
281281
macb_or_gem_writel(bp, SA1B, bottom);
282-
top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
282+
top = get_unaligned_le16(bp->dev->dev_addr + 4);
283283
macb_or_gem_writel(bp, SA1T, top);
284284

285285
/* Clear unused address register sets */

0 commit comments

Comments
 (0)