2014-10-08 17:45:01

by Larry Finger

[permalink] [raw]
Subject: [PATCH V3.18] rtlwifi: Fix possible unaligned array in ether_addr_copy()

Two macros used to copy BSSID information use ether_addr_copy(), thus
the arrays must be 2-byte aligned. In one case, the array could become
unaligned if the struct containing it were changed. Use the __unaligned(2)
attribute to retain the necessary alignment. In addition, the magic number
used to specify the size of the array is replaced by ETH_ALEN.

Signed-off-by: Larry Finger <[email protected]>
---
drivers/net/wireless/rtlwifi/wifi.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
index 976667a..6866dcf 100644
--- a/drivers/net/wireless/rtlwifi/wifi.h
+++ b/drivers/net/wireless/rtlwifi/wifi.h
@@ -1370,7 +1370,7 @@ struct rtl_mac {
bool rdg_en;

/*AP*/
- u8 bssid[6];
+ u8 bssid[ETH_ALEN] __aligned(2);
u32 vendor;
u8 mcs[16]; /* 16 bytes mcs for HT rates. */
u32 basic_rates; /* b/g rates */
--
1.8.4.5



2014-10-08 19:00:23

by David Miller

[permalink] [raw]
Subject: Re: [PATCH V3.18] rtlwifi: Fix possible unaligned array in ether_addr_copy()

From: Larry Finger <[email protected]>
Date: Wed, 8 Oct 2014 12:44:55 -0500

> Two macros used to copy BSSID information use ether_addr_copy(), thus
> the arrays must be 2-byte aligned. In one case, the array could become
> unaligned if the struct containing it were changed. Use the __unaligned(2)
> attribute to retain the necessary alignment. In addition, the magic number
> used to specify the size of the array is replaced by ETH_ALEN.
>
> Signed-off-by: Larry Finger <[email protected]>

Acked-by: David S. Miller <[email protected]>