* [PATCH 1/1] net/wireless/util.c: replace memcpy by ether_addr_copy
@ 2014-05-12 17:51 Fabian Frederick
2014-05-13 13:05 ` Johannes Berg
0 siblings, 1 reply; 3+ messages in thread
From: Fabian Frederick @ 2014-05-12 17:51 UTC (permalink / raw)
To: linux-kernel; +Cc: Johannes Berg, John W. Linville, akpm
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Fabian Frederick <fabf@skynet.be>
---
net/wireless/util.c | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/net/wireless/util.c b/net/wireless/util.c
index e5872ff..ab23b95 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -381,8 +381,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
* 1 0 BSSID SA DA n/a
* 1 1 RA TA DA SA
*/
- memcpy(dst, ieee80211_get_DA(hdr), ETH_ALEN);
- memcpy(src, ieee80211_get_SA(hdr), ETH_ALEN);
+ ether_addr_copy(dst, ieee80211_get_DA(hdr));
+ ether_addr_copy(src, ieee80211_get_SA(hdr));
switch (hdr->frame_control &
cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) {
@@ -458,8 +458,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
/* remove RFC1042 or Bridge-Tunnel encapsulation and
* replace EtherType */
skb_pull(skb, hdrlen + 6);
- memcpy(skb_push(skb, ETH_ALEN), src, ETH_ALEN);
- memcpy(skb_push(skb, ETH_ALEN), dst, ETH_ALEN);
+ ether_addr_copy(skb_push(skb, ETH_ALEN), src);
+ ether_addr_copy(skb_push(skb, ETH_ALEN), dst);
} else {
struct ethhdr *ehdr;
__be16 len;
@@ -467,8 +467,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
skb_pull(skb, hdrlen);
len = htons(skb->len);
ehdr = (struct ethhdr *) skb_push(skb, sizeof(struct ethhdr));
- memcpy(ehdr->h_dest, dst, ETH_ALEN);
- memcpy(ehdr->h_source, src, ETH_ALEN);
+ ether_addr_copy(ehdr->h_dest, dst);
+ ether_addr_copy(ehdr->h_source, src);
ehdr->h_proto = len;
}
return 0;
@@ -503,25 +503,25 @@ int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr,
case NL80211_IFTYPE_P2P_GO:
fc |= cpu_to_le16(IEEE80211_FCTL_FROMDS);
/* DA BSSID SA */
- memcpy(hdr.addr1, skb->data, ETH_ALEN);
- memcpy(hdr.addr2, addr, ETH_ALEN);
- memcpy(hdr.addr3, skb->data + ETH_ALEN, ETH_ALEN);
+ ether_addr_copy(hdr.addr1, skb->data);
+ ether_addr_copy(hdr.addr2, addr);
+ ether_addr_copy(hdr.addr3, skb->data + ETH_ALEN);
hdrlen = 24;
break;
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_P2P_CLIENT:
fc |= cpu_to_le16(IEEE80211_FCTL_TODS);
/* BSSID SA DA */
- memcpy(hdr.addr1, bssid, ETH_ALEN);
- memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
- memcpy(hdr.addr3, skb->data, ETH_ALEN);
+ ether_addr_copy(hdr.addr1, bssid);
+ ether_addr_copy(hdr.addr2, skb->data + ETH_ALEN);
+ ether_addr_copy(hdr.addr3, skb->data);
hdrlen = 24;
break;
case NL80211_IFTYPE_ADHOC:
/* DA SA BSSID */
- memcpy(hdr.addr1, skb->data, ETH_ALEN);
- memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
- memcpy(hdr.addr3, bssid, ETH_ALEN);
+ ether_addr_copy(hdr.addr1, skb->data);
+ ether_addr_copy(hdr.addr2, skb->data + ETH_ALEN);
+ ether_addr_copy(hdr.addr3, bssid);
hdrlen = 24;
break;
default:
@@ -622,8 +622,8 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list,
unsigned int subframe_len = sizeof(struct ethhdr) + ntohs(len);
remaining = skb->len;
- memcpy(dst, eth->h_dest, ETH_ALEN);
- memcpy(src, eth->h_source, ETH_ALEN);
+ ether_addr_copy(dst, eth->h_dest);
+ ether_addr_copy(src, eth->h_source);
padding = (4 - subframe_len) & 0x3;
/* the last MSDU has no padding */
@@ -669,13 +669,13 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list,
/* remove RFC1042 or Bridge-Tunnel
* encapsulation and replace EtherType */
skb_pull(frame, 6);
- memcpy(skb_push(frame, ETH_ALEN), src, ETH_ALEN);
- memcpy(skb_push(frame, ETH_ALEN), dst, ETH_ALEN);
+ ether_addr_copy(skb_push(frame, ETH_ALEN), src);
+ ether_addr_copy(skb_push(frame, ETH_ALEN), dst);
} else {
memcpy(skb_push(frame, sizeof(__be16)), &len,
sizeof(__be16));
- memcpy(skb_push(frame, ETH_ALEN), src, ETH_ALEN);
- memcpy(skb_push(frame, ETH_ALEN), dst, ETH_ALEN);
+ ether_addr_copy(skb_push(frame, ETH_ALEN), src);
+ ether_addr_copy(skb_push(frame, ETH_ALEN), dst);
}
__skb_queue_tail(list, frame);
}
--
1.9.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] net/wireless/util.c: replace memcpy by ether_addr_copy
2014-05-12 17:51 [PATCH 1/1] net/wireless/util.c: replace memcpy by ether_addr_copy Fabian Frederick
@ 2014-05-13 13:05 ` Johannes Berg
2014-05-13 14:42 ` Fabian Frederick
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Berg @ 2014-05-13 13:05 UTC (permalink / raw)
To: Fabian Frederick; +Cc: linux-kernel, John W. Linville, akpm
On Mon, 2014-05-12 at 19:51 +0200, Fabian Frederick wrote:
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: "John W. Linville" <linville@tuxdriver.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Fabian Frederick <fabf@skynet.be>
> ---
> net/wireless/util.c | 42 +++++++++++++++++++++---------------------
> 1 file changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/net/wireless/util.c b/net/wireless/util.c
> index e5872ff..ab23b95 100644
> --- a/net/wireless/util.c
> +++ b/net/wireless/util.c
> @@ -381,8 +381,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
> * 1 0 BSSID SA DA n/a
> * 1 1 RA TA DA SA
> */
> - memcpy(dst, ieee80211_get_DA(hdr), ETH_ALEN);
> - memcpy(src, ieee80211_get_SA(hdr), ETH_ALEN);
> + ether_addr_copy(dst, ieee80211_get_DA(hdr));
> + ether_addr_copy(src, ieee80211_get_SA(hdr));
I think this patch is mostly fine, but I'd like you to understand and
document (in the commit log) why it is, and fix the (potential future)
issue with "dst" as discussed in the other thread.
johannes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] net/wireless/util.c: replace memcpy by ether_addr_copy
2014-05-13 13:05 ` Johannes Berg
@ 2014-05-13 14:42 ` Fabian Frederick
0 siblings, 0 replies; 3+ messages in thread
From: Fabian Frederick @ 2014-05-13 14:42 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-kernel, John W. Linville, akpm
On Tue, 13 May 2014 15:05:40 +0200
Johannes Berg <johannes@sipsolutions.net> wrote:
> On Mon, 2014-05-12 at 19:51 +0200, Fabian Frederick wrote:
> > Cc: Johannes Berg <johannes@sipsolutions.net>
> > Cc: "John W. Linville" <linville@tuxdriver.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Signed-off-by: Fabian Frederick <fabf@skynet.be>
> > ---
> > net/wireless/util.c | 42 +++++++++++++++++++++---------------------
> > 1 file changed, 21 insertions(+), 21 deletions(-)
> >
> > diff --git a/net/wireless/util.c b/net/wireless/util.c
> > index e5872ff..ab23b95 100644
> > --- a/net/wireless/util.c
> > +++ b/net/wireless/util.c
> > @@ -381,8 +381,8 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
> > * 1 0 BSSID SA DA n/a
> > * 1 1 RA TA DA SA
> > */
> > - memcpy(dst, ieee80211_get_DA(hdr), ETH_ALEN);
> > - memcpy(src, ieee80211_get_SA(hdr), ETH_ALEN);
> > + ether_addr_copy(dst, ieee80211_get_DA(hdr));
> > + ether_addr_copy(src, ieee80211_get_SA(hdr));
>
> I think this patch is mostly fine, but I'd like you to understand and
> document (in the commit log) why it is, and fix the (potential future)
> issue with "dst" as discussed in the other thread.
>
> johannes
Thanks Johannes, I'll try to do that.
Fabian
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-13 14:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-12 17:51 [PATCH 1/1] net/wireless/util.c: replace memcpy by ether_addr_copy Fabian Frederick
2014-05-13 13:05 ` Johannes Berg
2014-05-13 14:42 ` Fabian Frederick
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®