Staging : wlan-ng: fix memcpy with ether_addr_copy in p80211conv.c
PATCH 1/1 Staging : wlan-ng: fix memcpy with ether_addr_copy in p80211conv.c
This is a patch which fixes memcpy warning found by a checpatch.pl in p80211conv.c and replaces memcpy with ether_addr_copy.
--- drivers/staging/wlan-ng/p80211conv.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
drivers/staging/wlan-ng/p80211conv.c +12 -10
@@ -178,21 +178,23 @@ int skb_ether_to_p80211(wlandevice_t *wlandev, u32 ethconv,switch (wlandev->macmode) {case WLAN_MACMODE_IBSS_STA : -memcpy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, wlandev->bssid,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr, +ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a3, wlandev->bssid,ETH_ALEN );break ;case WLAN_MACMODE_ESS_STA : fc |=cpu_to_le16 (WLAN_SET_FC_TODS (1 )); -memcpy (p80211_hdr->a3.a1, wlandev->bssid,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, &e_hdr.daddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, wlandev->bssid,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr, +ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a3, &e_hdr.daddr,ETH_ALEN );break ;case WLAN_MACMODE_ESS_AP : fc |=cpu_to_le16 (WLAN_SET_FC_FROMDS (1 )); -memcpy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->bssid,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, &e_hdr.saddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->bssid,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a3, &e_hdr.saddr,ETH_ALEN );break ;default : netdev_err(wlandev->netdev,
@@ -241,7 +243,7 @@ static void orinoco_spy_gather(wlandevice_t *wlandev, char *mac,for (i =0 ; i < wlandev->spy_number; i++) {if (!memcmp (wlandev->spy_address[i], mac,ETH_ALEN )) { -memcpy (wlandev->spy_address[i], mac,ETH_ALEN ); +ether_addr_copy (wlandev->spy_address[i], mac,ETH_ALEN ); wlandev->spy_stat[i].level = rxmeta->signal; wlandev->spy_stat[i].noise = rxmeta->noise; wlandev->spy_stat[i].qual =
Signature · 1 line
1.8.3.1
Greg KH
maintainerQuoted 2 lines · Abhishek Bist
This is a patch which fixes memcpy warning found by a checpatch.pl in
p80211conv.cand replaces memcpy withether_addr_copy.
How do you "know" it is safe to do this? Please prove it.
Quoted 2 lines
Signed-off-by Abhishek-Bist <[email protected]>
Your From: name and this name do not match :(
thanks,
greg k-h
PATCH 1/1 Staging : wlan-ng: fix memcpy with ether_addr_copy in p80211conv.c
This is a patch which fixes memcpy warning found by a checpatch.pl in p80211conv.c and replaces memcpy with ether_addr_copy.
--- drivers/staging/wlan-ng/p80211conv.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/staging/wlan-ng/p80211conv.c +10 -10
@@ -178,21 +178,21 @@ int skb_ether_to_p80211(wlandevice_t *wlandev, u32 ethconv,switch (wlandev->macmode) {case WLAN_MACMODE_IBSS_STA : -memcpy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, wlandev->bssid,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, &e_hdr.daddr); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr); +ether_addr_copy (p80211_hdr->a3.a3, wlandev->bssid);break ;case WLAN_MACMODE_ESS_STA : fc |=cpu_to_le16 (WLAN_SET_FC_TODS (1 )); -memcpy (p80211_hdr->a3.a1, wlandev->bssid,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, &e_hdr.daddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, wlandev->bssid); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->netdev->dev_addr); +ether_addr_copy (p80211_hdr->a3.a3, &e_hdr.daddr);break ;case WLAN_MACMODE_ESS_AP : fc |=cpu_to_le16 (WLAN_SET_FC_FROMDS (1 )); -memcpy (p80211_hdr->a3.a1, &e_hdr.daddr,ETH_ALEN ); -memcpy (p80211_hdr->a3.a2, wlandev->bssid,ETH_ALEN ); -memcpy (p80211_hdr->a3.a3, &e_hdr.saddr,ETH_ALEN ); +ether_addr_copy (p80211_hdr->a3.a1, &e_hdr.daddr); +ether_addr_copy (p80211_hdr->a3.a2, wlandev->bssid); +ether_addr_copy (p80211_hdr->a3.a3, &e_hdr.saddr);break ;default : netdev_err(wlandev->netdev,
@@ -241,7 +241,7 @@ static void orinoco_spy_gather(wlandevice_t *wlandev, char *mac,for (i =0 ; i < wlandev->spy_number; i++) {if (!memcmp (wlandev->spy_address[i], mac,ETH_ALEN )) { -memcpy (wlandev->spy_address[i], mac,ETH_ALEN ); +ether_addr_copy (wlandev->spy_address[i], mac); wlandev->spy_stat[i].level = rxmeta->signal; wlandev->spy_stat[i].noise = rxmeta->noise; wlandev->spy_stat[i].qual =
Signature · 13 lines
1.8.3.1 How do you "know" it is safe to do this? Please prove it. Yes, it is safe to do this because the basic pre-requisite of ether_addr_copy() over memcpy() is that ether_addr_copy() is strictly designed to copy an ethernet address where source and destination are a 6 byte array which is true in my case as p80211_hdr->a3.a1,p80211_hdr->a3.a2,p80211_hdr->a3.a3 are all a six byte array and the next important thing is that they should be u16 alligned.So, for that sake i checked it by pahole which clearly shows that the source and destination are u16 byte alligned.And on some architecture ether_addr_copy is faster than memcpy(). So, it's seems fair enough to use ether_addr_copy() over memcpy() when the size of data to be copied is ETH_ALEN which is #define ETH_ALEN 6
Quoted 3 lines · Abhishek Bist
This is a patch which fixes memcpy warning found by a checpatch.pl in
p80211conv.cand replaces memcpy withether_addr_copy.
---
you missed the the Signed-off-by:
regards
sudip
Greg KH
maintainerQuoted 5 lines · Abhishek Bist
This is a patch which fixes memcpy warning found by a checpatch.pl in
p80211conv.cand replaces memcpy withether_addr_copy.--- drivers/staging/wlan-ng/p80211conv.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
We need proof this is ok to do, like I asked last time :(