Both struct ieee80211_rts and struct ieee80211_hdr defined in
linux/ieee80211.h are declared as __aligned(2) so it is safe to use
ether_addr_copy() instead of memcpy().
Signed-off-by: Krzysztof Adamski <[email protected]>
---
drivers/staging/vt6656/rxtx.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index ea5140a..280c923 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -36,6 +36,7 @@
*
*/
+#include <linux/etherdevice.h>
#include "device.h"
#include "rxtx.h"
#include "card.h"
@@ -392,8 +393,8 @@ static int vnt_fill_ieee80211_rts(struct vnt_usb_send_context *tx_context,
rts->frame_control =
cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS);
- memcpy(rts->ra, hdr->addr1, ETH_ALEN);
- memcpy(rts->ta, hdr->addr2, ETH_ALEN);
+ ether_addr_copy(rts->ra, hdr->addr1);
+ ether_addr_copy(rts->ta, hdr->addr2);
return 0;
}
--
1.9.3
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
On Tue, 2014-12-16 at 09:30 +0100, Krzysztof Adamski wrote:
> Both struct ieee80211_rts and struct ieee80211_hdr defined in
> linux/ieee80211.h are declared as __aligned(2) so it is safe to use
> ether_addr_copy() instead of memcpy().
Just fyi:
That the structure is declared __aligned(2) is not
the important bit. What's necessary is that the
members in the struct are __aligned(2).
In this case, all of these members are.
> diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
[]
> @@ -392,8 +393,8 @@ static int vnt_fill_ieee80211_rts(struct vnt_usb_send_context *tx_context,
> rts->frame_control =
> cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS);
>
> - memcpy(rts->ra, hdr->addr1, ETH_ALEN);
> - memcpy(rts->ta, hdr->addr2, ETH_ALEN);
> + ether_addr_copy(rts->ra, hdr->addr1);
> + ether_addr_copy(rts->ta, hdr->addr2);
On Tue, Dec 16, 2014 at 12:42:06AM -0800, Joe Perches wrote:
>On Tue, 2014-12-16 at 09:30 +0100, Krzysztof Adamski wrote:
>> Both struct ieee80211_rts and struct ieee80211_hdr defined in
>> linux/ieee80211.h are declared as __aligned(2) so it is safe to use
>> ether_addr_copy() instead of memcpy().
>
>Just fyi:
>
>That the structure is declared __aligned(2) is not
>the important bit. What's necessary is that the
>members in the struct are __aligned(2).
>
>In this case, all of these members are.
Hi,
Thank you for your feedback. Yes, you are right. It was a bit of a
shortcut in my reasoning. Since struct is aligned and it's packed and
both members preceding the array we want to copy are 16 bit large, the
array address is guaranteed to be properly aligned.
Best regards,
Krzysztof Adamski