[PATCH RESEND] wifi: ath12k: fix MAC address copy on big endian
Alexander Wilhelm <[email protected]>
| Newsgroups | org.infradead.lists.ath12k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <20260629-fix-mac-addr-copy-on-big-endian-v1-1-3de40f74c13e@westermo.com> |
The ath12k_dp_get_mac_addr function performs a simple memcpy from a CPU-native data types into an u8 array. On a big-endian architecture, this later results in a null‑pointer dereference. Convert the data to little‑endian first, then copy it into the target array. Signed-off-by: Alexander Wilhelm <[email protected]> --- drivers/net/wireless/ath/ath12k/dp.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h index f8cfc7bb29dd..50957915dbf4 100644 --- a/drivers/net/wireless/ath/ath12k/dp.h +++ b/drivers/net/wireless/ath/ath12k/dp.h @@ -647,8 +647,11 @@ int ath12k_dp_arch_rx_tid_delete_handler(struct ath12k_dp *dp, static inline void ath12k_dp_get_mac_addr(u32 addr_l32, u16 addr_h16, u8 *addr) { - memcpy(addr, &addr_l32, 4); - memcpy(addr + 4, &addr_h16, ETH_ALEN - 4); + __le32 le_addr_l32 = cpu_to_le32(addr_l32); + __le16 le_addr_h16 = cpu_to_le16(addr_h16); + + memcpy(addr, &le_addr_l32, 4); + memcpy(addr + 4, &le_addr_h16, ETH_ALEN - 4); } static inline struct ath12k_dp * --- base-commit: 702847e8cfd51856836a282db2073defd7cfd80c change-id: 20260317-fix-mac-addr-copy-on-big-endian-f1a4fea40184 Best regards, -- Alexander Wilhelm <[email protected]>