linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] checkpatch: new ethernet address manipulation checks
@ 2015-04-19 22:16 Mateusz Kulikowski
  2015-04-19 22:16 ` [PATCH v2 1/2] checkpatch: suggest using ether_addr_equal*() Mateusz Kulikowski
  2015-04-19 22:16 ` [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr() Mateusz Kulikowski
  0 siblings, 2 replies; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-19 22:16 UTC (permalink / raw)
  To: joe, apw; +Cc: Mateusz Kulikowski, davem, netdev, linux-kernel

Changes in v2 (applied review comments):
- Fixed indentation in both patches
- Detect memset(foo, 0x00, ETH_ALEN)
- Detect memset(foo, 255, ETH_ALEN)
- Rephrased 2/2 commit message

Patch Notes from v1:
Add 3 new warnings to checkpatch:
1) PREFER_ETHER_ADDR_EQUAL 
Replace memcmp(foo, bar, ETH_ALEN) with ether_addr_equal*()
2) PREFER_ETH_ZERO_ADDR
Replace memset(foo, 0, ETH_ALEN) with eth_zero_addr()
3) PREFER_ETH_BROADCAST_ADDR
Replace memset(foo, 0xFF, ETH_ALEN) with eth_broadcast_addr()


Mateusz Kulikowski (2):
  checkpatch: suggest using ether_addr_equal*()
  checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()

 scripts/checkpatch.pl | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

-- 
1.8.4.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v2 1/2] checkpatch: suggest using ether_addr_equal*()
  2015-04-19 22:16 [PATCH v2 0/2] checkpatch: new ethernet address manipulation checks Mateusz Kulikowski
@ 2015-04-19 22:16 ` Mateusz Kulikowski
  2015-04-19 22:16 ` [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr() Mateusz Kulikowski
  1 sibling, 0 replies; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-19 22:16 UTC (permalink / raw)
  To: joe, apw; +Cc: Mateusz Kulikowski, davem, netdev, linux-kernel

Check if memcmp() is used to compare ethernet addresses and suggest
using ether_addr_equal() or ether_addr_equal_unaligned()

Signed-off-by: Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
---
 scripts/checkpatch.pl | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 89b1df4..b9ea436 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5035,6 +5035,13 @@ sub process {
 			}
 		}
 
+# Check for memcmp(foo, bar, ETH_ALEN) that could be ether_addr_equal*(foo, bar)
+		if ($^V && $^V ge 5.10.0 &&
+		    $line =~ /^\+(?:.*?)\bmemcmp\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/s) {
+			WARN("PREFER_ETHER_ADDR_EQUAL",
+			     "Prefer ether_addr_equal() or ether_addr_equal_unaligned() over memcmp()\n" . $herecurr)
+		}
+
 # typecasts on min/max could be min_t/max_t
 		if ($^V && $^V ge 5.10.0 &&
 		    defined $stat &&
-- 
1.8.4.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-19 22:16 [PATCH v2 0/2] checkpatch: new ethernet address manipulation checks Mateusz Kulikowski
  2015-04-19 22:16 ` [PATCH v2 1/2] checkpatch: suggest using ether_addr_equal*() Mateusz Kulikowski
@ 2015-04-19 22:16 ` Mateusz Kulikowski
  2015-04-20  1:13   ` Joe Perches
  1 sibling, 1 reply; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-19 22:16 UTC (permalink / raw)
  To: joe, apw; +Cc: Mateusz Kulikowski, davem, netdev, linux-kernel

Suggest using eth_zero_addr() or eth_broadcast_addr() instead of memset().

Signed-off-by: Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
---
 scripts/checkpatch.pl | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index b9ea436..aee6d43 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5042,6 +5042,22 @@ sub process {
 			     "Prefer ether_addr_equal() or ether_addr_equal_unaligned() over memcmp()\n" . $herecurr)
 		}
 
+# check for memset(foo, 0x0, ETH_ALEN) that could be eth_zero_addr
+# check for memset(foo, 0xFF, ETH_ALEN) that could be eth_broadcast_addr
+		if ($^V && $^V ge 5.10.0 &&
+		    $line =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/s) {
+
+			my $ms_val = $7;
+
+			if ($ms_val =~ /^(0x|)0+$/i) {
+				WARN("PREFER_ETH_ZERO_ADDR",
+				     "Prefer eth_zero_addr over memset()\n" . $herecurr);
+			} elsif ($ms_val =~ /^(?:0xff|255)$/i) {
+				WARN("PREFER_ETH_BROADCAST_ADDR",
+				     "Prefer eth_broadcast_addr() over memset()\n" . $herecurr);
+			}
+		}
+
 # typecasts on min/max could be min_t/max_t
 		if ($^V && $^V ge 5.10.0 &&
 		    defined $stat &&
-- 
1.8.4.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-19 22:16 ` [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr() Mateusz Kulikowski
@ 2015-04-20  1:13   ` Joe Perches
  2015-04-21 20:57     ` Mateusz Kulikowski
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2015-04-20  1:13 UTC (permalink / raw)
  To: Mateusz Kulikowski; +Cc: apw, davem, netdev, linux-kernel

On Mon, 2015-04-20 at 00:16 +0200, Mateusz Kulikowski wrote:
> Suggest using eth_zero_addr() or eth_broadcast_addr() instead of memset().

Hi again Mateusz

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5042,6 +5042,22 @@ sub process {
>  			     "Prefer ether_addr_equal() or ether_addr_equal_unaligned() over memcmp()\n" . $herecurr)
>  		}
>  
> +# check for memset(foo, 0x0, ETH_ALEN) that could be eth_zero_addr
> +# check for memset(foo, 0xFF, ETH_ALEN) that could be eth_broadcast_addr
> +		if ($^V && $^V ge 5.10.0 &&
> +		    $line =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/s) {

Because you are working with $line and not $stat,
the last /s isn't useful here.

$line is always a single line.

> +			my $ms_val = $7;
> +
> +			if ($ms_val =~ /^(0x|)0+$/i) {

It's trivially faster to use (?:0x|) so the 0x is not captured.

> +				WARN("PREFER_ETH_ZERO_ADDR",
> +				     "Prefer eth_zero_addr over memset()\n" . $herecurr);

And these could be:
				if (WARN(...) &&
				    $fix) {
					$fixed[$fixlinenr] = s/\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*,\s*ETH_ALEN\s*\)/eth_zero_addr($1)/;
				}
			}
		
> +			} elsif ($ms_val =~ /^(?:0xff|255)$/i) {
> +				WARN("PREFER_ETH_BROADCAST_ADDR",
> +				     "Prefer eth_broadcast_addr() over memset()\n" . $herecurr);

				if (WARN(...) &&
				    $fix) {
					$fixed[$fixlinenr] = s/\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*,\s*ETH_ALEN\s*\)/eth_broadcast_addr($1)/;
				}

cheers, Joe


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-20  1:13   ` Joe Perches
@ 2015-04-21 20:57     ` Mateusz Kulikowski
  2015-04-21 21:22       ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-21 20:57 UTC (permalink / raw)
  To: Joe Perches; +Cc: apw, davem, netdev, linux-kernel

Hi Joe, 

On 20.04.2015 03:13, Joe Perches wrote:
> On Mon, 2015-04-20 at 00:16 +0200, Mateusz Kulikowski wrote:
>> Suggest using eth_zero_addr() or eth_broadcast_addr() instead of memset().
> 
> Hi again Mateusz
> 
>> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
>> @@ -5042,6 +5042,22 @@ sub process {
>>  			     "Prefer ether_addr_equal() or ether_addr_equal_unaligned() over memcmp()\n" . $herecurr)
>>  		}
>>  
>> +# check for memset(foo, 0x0, ETH_ALEN) that could be eth_zero_addr
>> +# check for memset(foo, 0xFF, ETH_ALEN) that could be eth_broadcast_addr
>> +		if ($^V && $^V ge 5.10.0 &&
>> +		    $line =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/s) {
> 
> Because you are working with $line and not $stat,
> the last /s isn't useful here.
> 
> $line is always a single line.

Perhaps it would be smarter to use (for both patches) $stat instead.
This applies also to existing checks (like PREFER_ETHER_ADDR_COPY) 
so we can catch calls formatted like

memset(very.long.structure->something.something_different42,
       0xFF, ETH_ALEN);


Regards,
Mateusz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-21 20:57     ` Mateusz Kulikowski
@ 2015-04-21 21:22       ` Joe Perches
  2015-04-21 21:44         ` Mateusz Kulikowski
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2015-04-21 21:22 UTC (permalink / raw)
  To: Mateusz Kulikowski; +Cc: apw, davem, netdev, linux-kernel

On Tue, 2015-04-21 at 22:57 +0200, Mateusz Kulikowski wrote:
> Hi Joe, 
> 
> On 20.04.2015 03:13, Joe Perches wrote:
> > On Mon, 2015-04-20 at 00:16 +0200, Mateusz Kulikowski wrote:
> >> Suggest using eth_zero_addr() or eth_broadcast_addr() instead of memset().
> > 
> > Hi again Mateusz
> > 
> >> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > []
> >> @@ -5042,6 +5042,22 @@ sub process {
> >>  			     "Prefer ether_addr_equal() or ether_addr_equal_unaligned() over memcmp()\n" . $herecurr)
> >>  		}
> >>  
> >> +# check for memset(foo, 0x0, ETH_ALEN) that could be eth_zero_addr
> >> +# check for memset(foo, 0xFF, ETH_ALEN) that could be eth_broadcast_addr
> >> +		if ($^V && $^V ge 5.10.0 &&
> >> +		    $line =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/s) {
> > 
> > Because you are working with $line and not $stat,
> > the last /s isn't useful here.
> > 
> > $line is always a single line.
> 
> Perhaps it would be smarter to use (for both patches) $stat instead.
> This applies also to existing checks (like PREFER_ETHER_ADDR_COPY) 
> so we can catch calls formatted like
> 
> memset(very.long.structure->something.something_different42,
>        0xFF, ETH_ALEN);

Yes, likely that's true.

checkpatch couldn't --fix it easily unless it's on a
single line though.

As far as I can tell, there are ~120 of these "memcpy"s
in the tree, but there aren't any "memset"s like that
split into 2 or more lines.

Here's a list of the multiple line memcpy(..., ETH_ALEN)
uses that I found.

arch/arm/mach-davinci/board-mityomapl138.c:144:		memcpy(soc_info->emac_pdata->mac_addr,
			factory_config.mac, ETH_ALEN);
drivers/staging/rtl8712/rtl8712_recv.c:395:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src,
				ETH_ALEN);
drivers/staging/rtl8712/rtl8712_recv.c:396:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst,
				ETH_ALEN);
drivers/staging/rtl8712/rtl8712_recv.c:402:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src,
				ETH_ALEN);
drivers/staging/rtl8712/rtl8712_recv.c:403:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst,
				ETH_ALEN);
drivers/staging/rtl8712/os_intfs.c:398:			memcpy(pnetdev->dev_addr,
				padapter->eeprompriv.mac_addr, ETH_ALEN);
drivers/staging/rtl8712/os_intfs.c:414:			memcpy(padapter->eeprompriv.mac_addr,
				pnetdev->dev_addr, ETH_ALEN);
drivers/staging/rtl8712/rtl871x_ioctl_linux.c:107:	memcpy(wrqu.ap_addr.sa_data, pmlmepriv->cur_network.network.MacAddress,
		ETH_ALEN);
drivers/staging/rtl8712/rtl871x_ioctl_linux.c:838:			memcpy(psecuritypriv->PMKIDList[psecuritypriv->
				PMKIDIndex].Bssid, strIssueBssid, ETH_ALEN);
drivers/staging/rtl8712/rtl871x_xmit.c:489:			memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv),
				ETH_ALEN);
drivers/staging/rtl8712/rtl871x_xmit.c:496:			memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv),
				ETH_ALEN);
drivers/staging/rtl8712/rtl871x_xmit.c:503:			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
				ETH_ALEN);
drivers/staging/rtl8712/rtl871x_xmit.c:507:			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
				ETH_ALEN);
drivers/staging/rtl8192e/rtllib_softmac_wx.c:125:		memcpy(wrqu->ap_addr.sa_data,
		       ieee->current_network.bssid, ETH_ALEN);
drivers/staging/rtl8192e/rtllib_tx.c:697:			memcpy(&header.addr1, ieee->current_network.bssid,
			       ETH_ALEN);
drivers/staging/rtl8192e/rtllib_tx.c:700:				memcpy(&header.addr3,
				       ieee->current_network.bssid, ETH_ALEN);
drivers/staging/rtl8192e/rtllib_tx.c:709:			memcpy(&header.addr3, ieee->current_network.bssid,
			       ETH_ALEN);
drivers/staging/rtl8192e/rtllib_softmac.c:3748:		memcpy(wrqu.ap_addr.sa_data, ieee->current_network.bssid,
		       ETH_ALEN);
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac_wx.c:126:		memcpy(wrqu->ap_addr.sa_data,
		       ieee->current_network.bssid, ETH_ALEN);
drivers/staging/slicoss/slicoss.c:567:			memcpy(adapter->currmacaddr, adapter->macaddr,
			       ETH_ALEN);
drivers/staging/slicoss/slicoss.c:569:			memcpy(adapter->netdev->dev_addr, adapter->currmacaddr,
			       ETH_ALEN);
drivers/staging/rtl8723au/hal/usb_halinit.c:1020:		memcpy(pEEPROM->mac_addr, &hwinfo[EEPROM_MAC_ADDR_8723AU],
		       ETH_ALEN);
drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:327:		memcpy(pwlanhdr->addr1,
		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:328:		memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv),
		       ETH_ALEN);
drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:335:		memcpy(pwlanhdr->addr2,
		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:336:		memcpy(pwlanhdr->addr3, myid(&padapter->eeprompriv),
		       ETH_ALEN);
drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:342:		memcpy(pwlanhdr->addr3,
		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
drivers/scsi/fcoe/fcoe_ctlr.c:945:			memcpy(fcf->fcf_mac,
			       ((struct fip_mac_desc *)desc)->fd_mac,
drivers/scsi/fcoe/fcoe_ctlr.c:1198:				memcpy(granted_mac,
				       ((struct fip_mac_desc *)desc)->fd_mac,
drivers/scsi/fcoe/fcoe_ctlr.c:1204:				memcpy(sel->fcoe_mac,
				       ((struct fip_mac_desc *)desc)->fd_mac,
drivers/scsi/bnx2fc/bnx2fc_fcoe.c:1187:			memcpy(ctlr->ctl_src_addr, ha->addr,
			       ETH_ALEN);
drivers/net/ethernet/emulex/benet/be_cmds.c:3014:			memcpy(mac, resp->macid_macaddr.mac_addr_id.macaddr,
			       ETH_ALEN);
drivers/net/ethernet/emulex/benet/be_cmds.c:3043:		memcpy(mac, resp->macaddr_list[0].mac_addr_id.macaddr,
		       ETH_ALEN);
drivers/net/ethernet/neterion/vxge/vxge-main.c:4632:		memcpy((u8 *)vdev->vpaths[j].macaddr,
				ll_config->device_hw_info.mac_addrs[i],
drivers/net/ethernet/i825xx/sun3_82586.c:538:			memcpy((char *) mc_cmd->mc_list[i++],
			       ha->addr, ETH_ALEN);
drivers/net/ethernet/intel/e100.c:1600:		memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &ha->addr,
			ETH_ALEN);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c:1169:		memcpy(vfres->vsi_res[i].default_mac_addr,
		       vf->default_lan_addr.addr, ETH_ALEN);
drivers/net/ethernet/intel/i40evf/i40e_common.c:615:			memcpy(hw->mac.perm_addr, vsi_res->default_mac_addr,
			       ETH_ALEN);
drivers/net/ethernet/intel/i40evf/i40e_common.c:616:			memcpy(hw->mac.addr, vsi_res->default_mac_addr,
			       ETH_ALEN);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:3522:	memcpy(iscsi_stat->mac_local + MAC_PAD, bp->cnic_eth_dev.iscsi_mac,
	       ETH_ALEN);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:380:		memcpy(bp->dev->dev_addr,
		       bp->acquire_resp.resc.current_mac_addr,
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:757:			memcpy(req->filters[0].mac, bp->dev->dev_addr,
			       ETH_ALEN);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:1222:				memcpy(resc->current_mac_addr, bulletin->mac,
				       ETH_ALEN);
drivers/net/ethernet/toshiba/ps3_gelic_wireless.c:1162:		memcpy(wl->bssid, data->ap_addr.sa_data,
		       ETH_ALEN);
drivers/net/ethernet/toshiba/ps3_gelic_wireless.c:1188:		memcpy(data->ap_addr.sa_data, wl->active_bssid,
		       ETH_ALEN);
drivers/net/ethernet/micrel/ksz884x.c:4076:			memcpy(hw->override_addr, DEFAULT_MAC_ADDRESS,
			       ETH_ALEN);
drivers/net/ethernet/micrel/ksz884x.c:7091:			memcpy(dev->dev_addr, hw_priv->hw.override_addr,
			       ETH_ALEN);
drivers/net/ethernet/brocade/bna/bna_tx_rx.c:1152:		memcpy(rxf->ucast_active_mac.addr,
			rxf->ucast_pending_mac->addr, ETH_ALEN);
drivers/net/ethernet/brocade/bna/bnad.c:1865:		memcpy(&mc_list[i * ETH_ALEN], &mc_addr->addr[0],
							ETH_ALEN);
drivers/net/ethernet/brocade/bna/bnad.c:3143:		memcpy(&mac_list[entry * ETH_ALEN],
		       &ha->addr[0], ETH_ALEN);
drivers/net/ethernet/atheros/atlx/atl1.c:3132:		memcpy(adapter->hw.mac_addr, adapter->hw.perm_mac_addr,
			ETH_ALEN);
drivers/net/ethernet/chelsio/cxgb3/t3_hw.c:3726:		memcpy(adapter->port[i]->dev_addr, hw_addr,
		       ETH_ALEN);
drivers/net/ethernet/mellanox/mlx4/mcg.c:847:		memcpy(rule_hw->eth.dst_mac_msk, spec->eth.dst_mac_msk,
		       ETH_ALEN);
drivers/net/ethernet/mellanox/mlx4/mcg.c:849:		memcpy(rule_hw->eth.src_mac_msk, spec->eth.src_mac_msk,
		       ETH_ALEN);
drivers/net/ethernet/ti/cpsw.c:2112:		memcpy(priv_sl2->mac_addr, data->slave_data[1].mac_addr,
			ETH_ALEN);
drivers/net/ethernet/sun/sunvnet.c:1532:		memcpy(&info.mcast_addr[n_addrs * ETH_ALEN],
		       m->addr, ETH_ALEN);
drivers/net/ethernet/sun/sunvnet.c:1557:		memcpy(&info.mcast_addr[n_addrs * ETH_ALEN],
		       m->addr, ETH_ALEN);
drivers/net/vmxnet3/vmxnet3_drv.c:2033:				memcpy(buf + i++ * ETH_ALEN, ha->addr,
				       ETH_ALEN);
drivers/net/wireless/cw1200/txrx.c:1039:		memcpy(&priv->action_frame_sa[0],
		       ieee80211_get_SA(frame), ETH_ALEN);
drivers/net/wireless/cw1200/txrx.c:1051:		memcpy(&priv->action_frame_sa[0],
		       ieee80211_get_SA(frame), ETH_ALEN);
drivers/net/wireless/cw1200/txrx.c:1410:			memcpy(map_link.mac_addr, priv->link_id_db[i].mac,
			       ETH_ALEN);
drivers/net/wireless/cw1200/txrx.c:1448:				memcpy(map_link.mac_addr,
				       priv->link_id_db[i].mac,
drivers/net/wireless/cw1200/sta.c:558:		memcpy(&priv->multicast_filter.macaddrs[count],
		       ha->addr, ETH_ALEN);
drivers/net/wireless/cw1200/sta.c:725:				memcpy(wsm_key->wep_pairwise.peer,
				       peer_addr, ETH_ALEN);
drivers/net/wireless/cw1200/sta.c:741:				memcpy(wsm_key->tkip_pairwise.peer,
				       peer_addr, ETH_ALEN);
drivers/net/wireless/cw1200/sta.c:774:				memcpy(wsm_key->aes_pairwise.peer,
				       peer_addr, ETH_ALEN);
drivers/net/wireless/cw1200/sta.c:796:				memcpy(wsm_key->wapi_pairwise.peer,
				       peer_addr, ETH_ALEN);
drivers/net/wireless/prism54/isl_ioctl.c:2491:		memcpy(priv->ndev->dev_addr,
		       &((struct sockaddr *) addr)->sa_data, ETH_ALEN);
drivers/net/wireless/iwlwifi/dvm/main.c:1317:		memcpy(priv->addresses[1].addr, priv->addresses[0].addr,
		       ETH_ALEN);
drivers/net/wireless/iwlwifi/mvm/mac80211.c:501:		memcpy(mvm->addresses[i].addr, mvm->addresses[i-1].addr,
		       ETH_ALEN);
drivers/net/wireless/iwlwifi/mvm/mac80211.c:1812:		memcpy(&cmd->addr_list[cmd->count * ETH_ALEN],
		       addr->addr, ETH_ALEN);
drivers/net/wireless/iwlwifi/mvm/power.c:508:		memcpy(mvmvif->uapsd_misbehaving_bssid, vif->bss_conf.bssid,
		       ETH_ALEN);
drivers/net/wireless/iwlegacy/common.c:5471:			memcpy(il->staging.bssid_addr, bss_conf->bssid,
			       ETH_ALEN);
drivers/net/wireless/rsi/rsi_91x_mgmt.c:1281:				memcpy(common->mac_addr,
				       &msg[offset],
drivers/net/wireless/rsi/rsi_91x_mgmt.c:1282:				memcpy(&common->fw_ver,
				       &msg[offset + ETH_ALEN],
drivers/net/wireless/wl3501_cs.c:876:				memcpy(this->bssid,
				       this->bss_set[i].bssid, ETH_ALEN);
drivers/net/wireless/ath/ath10k/wmi.c:4128:			memcpy(&bssids->bssid_list[i],
			       arg->bssids[i].bssid,
drivers/net/wireless/ath/wcn36xx/smd.c:1059:	memcpy(&msg_body.bss_params.bssid,
	       &orig->bss_params.bssid, ETH_ALEN);
drivers/net/wireless/ath/wcn36xx/smd.c:1060:	memcpy(&msg_body.bss_params.self_mac_addr,
	       &orig->bss_params.self_mac_addr, ETH_ALEN);
drivers/net/wireless/ipw2x00/ipw2200.c:4517:						memcpy(priv->ieee->bssid,
						       priv->bssid, ETH_ALEN);
drivers/net/wireless/ipw2x00/ipw2200.c:4521:						memcpy(priv->ieee->bssid,
						       priv->bssid, ETH_ALEN);
drivers/net/wireless/ipw2x00/ipw2100.c:4728:		memcpy(cmd.host_command_parameters, priv->net_dev->dev_addr,
		       ETH_ALEN);
drivers/net/wireless/mwl8k.c:3970:	memcpy(&cmd->create_params.peer_mac_addr[0], stream->sta->addr,
	       ETH_ALEN);
drivers/net/wireless/hostap/hostap_80211_tx.c:180:			memcpy(&hdr.addr1, iface->u.wds.remote_addr,
			       ETH_ALEN);
drivers/net/wireless/hostap/hostap_80211_tx.c:195:		memcpy(&hdr.addr1, to_assoc_ap ?
		       local->assoc_ap_addr : local->bssid, ETH_ALEN);
drivers/net/wireless/rtlwifi/cam.c:305:			memcpy(rtlpriv->sec.hwsec_cam_sta_addr[entry_idx],
			       sta_addr, ETH_ALEN);
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c:3181:			memcpy(&cfg->pmk_list->pmkids.pmkid[i].BSSID,
			       &cfg->pmk_list->pmkids.pmkid[i + 1].BSSID,
drivers/net/wireless/airo.c:3657:			memcpy(&micbuf,
				ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2,
drivers/net/wireless/airo.c:3667:		memcpy(buffer + ETH_ALEN * 2,
			ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2 + off,
drivers/net/wireless/airo.c:7189:			memcpy(address[i].sa_data,
			       status_rid.bssid[i], ETH_ALEN);
drivers/net/wireless/libertas/cmd.c:156:			memcpy(priv->mesh_dev->dev_addr,
				priv->current_addr, ETH_ALEN);
drivers/net/wireless/rndis_wlan.c:1630:			memcpy(mc_addrs + i++ * ETH_ALEN,
			       ha->addr, ETH_ALEN);
drivers/net/wireless/ti/wl1251/main.c:757:			memcpy(fp->mc_list[fp->mc_list_length],
					ha->addr, ETH_ALEN);
drivers/net/wireless/ti/wlcore/main.c:3169:			memcpy(fp->mc_list[fp->mc_list_length],
					ha->addr, ETH_ALEN);
drivers/net/wireless/mwifiex/sta_cmdresp.c:845:		memcpy(priv->curr_bss_params.bss_descriptor.mac_address,
		       ibss_coal_resp->bssid, ETH_ALEN);
drivers/net/wireless/mwifiex/sta_rx.c:251:		memcpy(ta, priv->curr_bss_params.bss_descriptor.mac_address,
		       ETH_ALEN);
drivers/net/wireless/mwifiex/uap_event.c:132:		memcpy(priv->netdev->dev_addr, adapter->event_body + 2,
		       ETH_ALEN);
drivers/net/wireless/mwifiex/cfg80211.c:2881:		memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr,
				ETH_ALEN);
drivers/net/wireless/mwifiex/cfg80211.c:2891:		memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr,
				ETH_ALEN);
drivers/net/wireless/mwifiex/sta_cmd.c:411:		memcpy(cmd->params.mac_addr.mac_addr, priv->curr_addr,
		       ETH_ALEN);
drivers/net/wireless/mwifiex/sta_cmd.c:437:	memcpy(mcast_addr->mac_list, mcast_list->mac_list,
	       mcast_list->num_multicast_addr * ETH_ALEN);
drivers/net/wireless/mwifiex/11n_rxreorder.c:483:	memcpy(add_ba_rsp->peer_mac_addr, cmd_addba_req->peer_mac_addr,
	       ETH_ALEN);
drivers/net/wireless/mwifiex/sta_event.c:118:	memcpy(priv->prev_bssid,
	       priv->curr_bss_params.bss_descriptor.mac_address, ETH_ALEN);
drivers/net/wireless/mwifiex/scan.c:873:			memcpy(bssid_tlv->bssid, user_scan_in->specific_bssid,
			       ETH_ALEN);
drivers/net/wireless/mwifiex/join.c:1092:	memcpy(&adhoc_join->bss_descriptor.bssid,
	       &bss_desc->mac_address, ETH_ALEN);
drivers/net/wireless/mwifiex/join.c:1231:		memcpy(bss_desc->mac_address,
		       adhoc_result->bssid, ETH_ALEN);
drivers/net/wireless/mwifiex/join.c:1390:		memcpy(mac_address,
		       priv->curr_bss_params.bss_descriptor.mac_address,
drivers/net/wireless/libertas_tf/cmd.c:333:	memcpy(cmd.maclist, priv->multicastlist,
	       priv->nr_of_multicastmacaddr * ETH_ALEN);
drivers/net/wireless/libertas_tf/main.c:284:	memcpy(txpd->tx_dest_addr_high, skb->data + sizeof(struct txpd) + 4,
		ETH_ALEN);
drivers/net/usb/lg-vl600.c:197:			memcpy(ethhdr->h_source,
					&buf->data[sizeof(*ethhdr) + 0x8],
drivers/net/usb/lg-vl600.c:198:			memcpy(ethhdr->h_dest,
					&buf->data[sizeof(*ethhdr) + 0x12],
drivers/s390/net/qeth_l3_main.c:1489:		memcpy(card->dev->dev_addr,
			cmd->data.create_destroy_addr.unique_id, ETH_ALEN);
drivers/infiniband/hw/mlx4/main.c:869:		memcpy(mlx4_spec->eth.dst_mac, ib_spec->eth.val.dst_mac,
		       ETH_ALEN);
drivers/infiniband/hw/mlx4/main.c:870:		memcpy(mlx4_spec->eth.dst_mac_msk, ib_spec->eth.mask.dst_mac,
		       ETH_ALEN);
net/ethernet/eth.c:253:	memcpy(((u8 *) hh->hh_data) + HH_DATA_OFF(sizeof(struct ethhdr)),
	       haddr, ETH_ALEN);
net/mac80211/mlme.c:701:		memcpy(mgmt->u.reassoc_req.current_ap, assoc_data->prev_bssid,
		       ETH_ALEN);
net/mac80211/iface.c:563:		memcpy(dev->dev_addr,
		       local->hw.wiphy->perm_addr,
net/mac80211/iface.c:1582:				memcpy(perm_addr,
				       local->hw.wiphy->addresses[i].addr,
net/wireless/nl80211.c:9033:	memcpy(cfg->dst_mac, nla_data(tb[NL80211_WOWLAN_TCP_DST_MAC]),
	       ETH_ALEN);
net/wireless/wext-spy.c:57:			memcpy(spydata->spy_address[i], address[i].sa_data,
			       ETH_ALEN);
net/bluetooth/bnep/core.c:387:		memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb),
								ETH_ALEN);
net/bluetooth/bnep/core.c:388:		memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source,
								ETH_ALEN + 2);
net/bluetooth/bnep/core.c:392:		memcpy(__skb_put(nskb, ETH_ALEN * 2), skb_mac_header(skb),
								ETH_ALEN * 2);





^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-21 21:22       ` Joe Perches
@ 2015-04-21 21:44         ` Mateusz Kulikowski
  2015-04-21 22:27           ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-21 21:44 UTC (permalink / raw)
  To: Joe Perches; +Cc: apw, davem, netdev, linux-kernel

On 21.04.2015 23:22, Joe Perches wrote:
> On Tue, 2015-04-21 at 22:57 +0200, Mateusz Kulikowski wrote:
(...)
>>
>> Perhaps it would be smarter to use (for both patches) $stat instead.
>> This applies also to existing checks (like PREFER_ETHER_ADDR_COPY) 
>> so we can catch calls formatted like
>>
>> memset(very.long.structure->something.something_different42,
>>        0xFF, ETH_ALEN);
> 
> Yes, likely that's true.
> 
> checkpatch couldn't --fix it easily unless it's on a
> single line though.

True, True; If you prefer $line and ability to --fix - I'll use that in v3

> 
> As far as I can tell, there are ~120 of these "memcpy"s
> in the tree, but there aren't any "memset"s like that
> split into 2 or more lines.

Some of them are probably candidates for ether_addr_copy(_unaligned) :)
I'll probably take a look at them once I have both functions available.

Regards,
Mateusz

> 
> Here's a list of the multiple line memcpy(..., ETH_ALEN)
> uses that I found.
> 
> arch/arm/mach-davinci/board-mityomapl138.c:144:		memcpy(soc_info->emac_pdata->mac_addr,
> 			factory_config.mac, ETH_ALEN);
> drivers/staging/rtl8712/rtl8712_recv.c:395:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src,
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl8712_recv.c:396:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst,
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl8712_recv.c:402:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src,
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl8712_recv.c:403:			memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst,
> 				ETH_ALEN);
> drivers/staging/rtl8712/os_intfs.c:398:			memcpy(pnetdev->dev_addr,
> 				padapter->eeprompriv.mac_addr, ETH_ALEN);
> drivers/staging/rtl8712/os_intfs.c:414:			memcpy(padapter->eeprompriv.mac_addr,
> 				pnetdev->dev_addr, ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_ioctl_linux.c:107:	memcpy(wrqu.ap_addr.sa_data, pmlmepriv->cur_network.network.MacAddress,
> 		ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_ioctl_linux.c:838:			memcpy(psecuritypriv->PMKIDList[psecuritypriv->
> 				PMKIDIndex].Bssid, strIssueBssid, ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_xmit.c:489:			memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv),
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_xmit.c:496:			memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv),
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_xmit.c:503:			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
> 				ETH_ALEN);
> drivers/staging/rtl8712/rtl871x_xmit.c:507:			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
> 				ETH_ALEN);
> drivers/staging/rtl8192e/rtllib_softmac_wx.c:125:		memcpy(wrqu->ap_addr.sa_data,
> 		       ieee->current_network.bssid, ETH_ALEN);
> drivers/staging/rtl8192e/rtllib_tx.c:697:			memcpy(&header.addr1, ieee->current_network.bssid,
> 			       ETH_ALEN);
> drivers/staging/rtl8192e/rtllib_tx.c:700:				memcpy(&header.addr3,
> 				       ieee->current_network.bssid, ETH_ALEN);
> drivers/staging/rtl8192e/rtllib_tx.c:709:			memcpy(&header.addr3, ieee->current_network.bssid,
> 			       ETH_ALEN);
> drivers/staging/rtl8192e/rtllib_softmac.c:3748:		memcpy(wrqu.ap_addr.sa_data, ieee->current_network.bssid,
> 		       ETH_ALEN);
> drivers/staging/rtl8192u/ieee80211/ieee80211_softmac_wx.c:126:		memcpy(wrqu->ap_addr.sa_data,
> 		       ieee->current_network.bssid, ETH_ALEN);
> drivers/staging/slicoss/slicoss.c:567:			memcpy(adapter->currmacaddr, adapter->macaddr,
> 			       ETH_ALEN);
> drivers/staging/slicoss/slicoss.c:569:			memcpy(adapter->netdev->dev_addr, adapter->currmacaddr,
> 			       ETH_ALEN);
> drivers/staging/rtl8723au/hal/usb_halinit.c:1020:		memcpy(pEEPROM->mac_addr, &hwinfo[EEPROM_MAC_ADDR_8723AU],
> 		       ETH_ALEN);
> drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:327:		memcpy(pwlanhdr->addr1,
> 		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
> drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:328:		memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv),
> 		       ETH_ALEN);
> drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:335:		memcpy(pwlanhdr->addr2,
> 		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
> drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:336:		memcpy(pwlanhdr->addr3, myid(&padapter->eeprompriv),
> 		       ETH_ALEN);
> drivers/staging/rtl8723au/hal/rtl8723a_cmd.c:342:		memcpy(pwlanhdr->addr3,
> 		       get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN);
> drivers/scsi/fcoe/fcoe_ctlr.c:945:			memcpy(fcf->fcf_mac,
> 			       ((struct fip_mac_desc *)desc)->fd_mac,
> drivers/scsi/fcoe/fcoe_ctlr.c:1198:				memcpy(granted_mac,
> 				       ((struct fip_mac_desc *)desc)->fd_mac,
> drivers/scsi/fcoe/fcoe_ctlr.c:1204:				memcpy(sel->fcoe_mac,
> 				       ((struct fip_mac_desc *)desc)->fd_mac,
> drivers/scsi/bnx2fc/bnx2fc_fcoe.c:1187:			memcpy(ctlr->ctl_src_addr, ha->addr,
> 			       ETH_ALEN);
> drivers/net/ethernet/emulex/benet/be_cmds.c:3014:			memcpy(mac, resp->macid_macaddr.mac_addr_id.macaddr,
> 			       ETH_ALEN);
> drivers/net/ethernet/emulex/benet/be_cmds.c:3043:		memcpy(mac, resp->macaddr_list[0].mac_addr_id.macaddr,
> 		       ETH_ALEN);
> drivers/net/ethernet/neterion/vxge/vxge-main.c:4632:		memcpy((u8 *)vdev->vpaths[j].macaddr,
> 				ll_config->device_hw_info.mac_addrs[i],
> drivers/net/ethernet/i825xx/sun3_82586.c:538:			memcpy((char *) mc_cmd->mc_list[i++],
> 			       ha->addr, ETH_ALEN);
> drivers/net/ethernet/intel/e100.c:1600:		memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &ha->addr,
> 			ETH_ALEN);
> drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c:1169:		memcpy(vfres->vsi_res[i].default_mac_addr,
> 		       vf->default_lan_addr.addr, ETH_ALEN);
> drivers/net/ethernet/intel/i40evf/i40e_common.c:615:			memcpy(hw->mac.perm_addr, vsi_res->default_mac_addr,
> 			       ETH_ALEN);
> drivers/net/ethernet/intel/i40evf/i40e_common.c:616:			memcpy(hw->mac.addr, vsi_res->default_mac_addr,
> 			       ETH_ALEN);
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:3522:	memcpy(iscsi_stat->mac_local + MAC_PAD, bp->cnic_eth_dev.iscsi_mac,
> 	       ETH_ALEN);
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:380:		memcpy(bp->dev->dev_addr,
> 		       bp->acquire_resp.resc.current_mac_addr,
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:757:			memcpy(req->filters[0].mac, bp->dev->dev_addr,
> 			       ETH_ALEN);
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c:1222:				memcpy(resc->current_mac_addr, bulletin->mac,
> 				       ETH_ALEN);
> drivers/net/ethernet/toshiba/ps3_gelic_wireless.c:1162:		memcpy(wl->bssid, data->ap_addr.sa_data,
> 		       ETH_ALEN);
> drivers/net/ethernet/toshiba/ps3_gelic_wireless.c:1188:		memcpy(data->ap_addr.sa_data, wl->active_bssid,
> 		       ETH_ALEN);
> drivers/net/ethernet/micrel/ksz884x.c:4076:			memcpy(hw->override_addr, DEFAULT_MAC_ADDRESS,
> 			       ETH_ALEN);
> drivers/net/ethernet/micrel/ksz884x.c:7091:			memcpy(dev->dev_addr, hw_priv->hw.override_addr,
> 			       ETH_ALEN);
> drivers/net/ethernet/brocade/bna/bna_tx_rx.c:1152:		memcpy(rxf->ucast_active_mac.addr,
> 			rxf->ucast_pending_mac->addr, ETH_ALEN);
> drivers/net/ethernet/brocade/bna/bnad.c:1865:		memcpy(&mc_list[i * ETH_ALEN], &mc_addr->addr[0],
> 							ETH_ALEN);
> drivers/net/ethernet/brocade/bna/bnad.c:3143:		memcpy(&mac_list[entry * ETH_ALEN],
> 		       &ha->addr[0], ETH_ALEN);
> drivers/net/ethernet/atheros/atlx/atl1.c:3132:		memcpy(adapter->hw.mac_addr, adapter->hw.perm_mac_addr,
> 			ETH_ALEN);
> drivers/net/ethernet/chelsio/cxgb3/t3_hw.c:3726:		memcpy(adapter->port[i]->dev_addr, hw_addr,
> 		       ETH_ALEN);
> drivers/net/ethernet/mellanox/mlx4/mcg.c:847:		memcpy(rule_hw->eth.dst_mac_msk, spec->eth.dst_mac_msk,
> 		       ETH_ALEN);
> drivers/net/ethernet/mellanox/mlx4/mcg.c:849:		memcpy(rule_hw->eth.src_mac_msk, spec->eth.src_mac_msk,
> 		       ETH_ALEN);
> drivers/net/ethernet/ti/cpsw.c:2112:		memcpy(priv_sl2->mac_addr, data->slave_data[1].mac_addr,
> 			ETH_ALEN);
> drivers/net/ethernet/sun/sunvnet.c:1532:		memcpy(&info.mcast_addr[n_addrs * ETH_ALEN],
> 		       m->addr, ETH_ALEN);
> drivers/net/ethernet/sun/sunvnet.c:1557:		memcpy(&info.mcast_addr[n_addrs * ETH_ALEN],
> 		       m->addr, ETH_ALEN);
> drivers/net/vmxnet3/vmxnet3_drv.c:2033:				memcpy(buf + i++ * ETH_ALEN, ha->addr,
> 				       ETH_ALEN);
> drivers/net/wireless/cw1200/txrx.c:1039:		memcpy(&priv->action_frame_sa[0],
> 		       ieee80211_get_SA(frame), ETH_ALEN);
> drivers/net/wireless/cw1200/txrx.c:1051:		memcpy(&priv->action_frame_sa[0],
> 		       ieee80211_get_SA(frame), ETH_ALEN);
> drivers/net/wireless/cw1200/txrx.c:1410:			memcpy(map_link.mac_addr, priv->link_id_db[i].mac,
> 			       ETH_ALEN);
> drivers/net/wireless/cw1200/txrx.c:1448:				memcpy(map_link.mac_addr,
> 				       priv->link_id_db[i].mac,
> drivers/net/wireless/cw1200/sta.c:558:		memcpy(&priv->multicast_filter.macaddrs[count],
> 		       ha->addr, ETH_ALEN);
> drivers/net/wireless/cw1200/sta.c:725:				memcpy(wsm_key->wep_pairwise.peer,
> 				       peer_addr, ETH_ALEN);
> drivers/net/wireless/cw1200/sta.c:741:				memcpy(wsm_key->tkip_pairwise.peer,
> 				       peer_addr, ETH_ALEN);
> drivers/net/wireless/cw1200/sta.c:774:				memcpy(wsm_key->aes_pairwise.peer,
> 				       peer_addr, ETH_ALEN);
> drivers/net/wireless/cw1200/sta.c:796:				memcpy(wsm_key->wapi_pairwise.peer,
> 				       peer_addr, ETH_ALEN);
> drivers/net/wireless/prism54/isl_ioctl.c:2491:		memcpy(priv->ndev->dev_addr,
> 		       &((struct sockaddr *) addr)->sa_data, ETH_ALEN);
> drivers/net/wireless/iwlwifi/dvm/main.c:1317:		memcpy(priv->addresses[1].addr, priv->addresses[0].addr,
> 		       ETH_ALEN);
> drivers/net/wireless/iwlwifi/mvm/mac80211.c:501:		memcpy(mvm->addresses[i].addr, mvm->addresses[i-1].addr,
> 		       ETH_ALEN);
> drivers/net/wireless/iwlwifi/mvm/mac80211.c:1812:		memcpy(&cmd->addr_list[cmd->count * ETH_ALEN],
> 		       addr->addr, ETH_ALEN);
> drivers/net/wireless/iwlwifi/mvm/power.c:508:		memcpy(mvmvif->uapsd_misbehaving_bssid, vif->bss_conf.bssid,
> 		       ETH_ALEN);
> drivers/net/wireless/iwlegacy/common.c:5471:			memcpy(il->staging.bssid_addr, bss_conf->bssid,
> 			       ETH_ALEN);
> drivers/net/wireless/rsi/rsi_91x_mgmt.c:1281:				memcpy(common->mac_addr,
> 				       &msg[offset],
> drivers/net/wireless/rsi/rsi_91x_mgmt.c:1282:				memcpy(&common->fw_ver,
> 				       &msg[offset + ETH_ALEN],
> drivers/net/wireless/wl3501_cs.c:876:				memcpy(this->bssid,
> 				       this->bss_set[i].bssid, ETH_ALEN);
> drivers/net/wireless/ath/ath10k/wmi.c:4128:			memcpy(&bssids->bssid_list[i],
> 			       arg->bssids[i].bssid,
> drivers/net/wireless/ath/wcn36xx/smd.c:1059:	memcpy(&msg_body.bss_params.bssid,
> 	       &orig->bss_params.bssid, ETH_ALEN);
> drivers/net/wireless/ath/wcn36xx/smd.c:1060:	memcpy(&msg_body.bss_params.self_mac_addr,
> 	       &orig->bss_params.self_mac_addr, ETH_ALEN);
> drivers/net/wireless/ipw2x00/ipw2200.c:4517:						memcpy(priv->ieee->bssid,
> 						       priv->bssid, ETH_ALEN);
> drivers/net/wireless/ipw2x00/ipw2200.c:4521:						memcpy(priv->ieee->bssid,
> 						       priv->bssid, ETH_ALEN);
> drivers/net/wireless/ipw2x00/ipw2100.c:4728:		memcpy(cmd.host_command_parameters, priv->net_dev->dev_addr,
> 		       ETH_ALEN);
> drivers/net/wireless/mwl8k.c:3970:	memcpy(&cmd->create_params.peer_mac_addr[0], stream->sta->addr,
> 	       ETH_ALEN);
> drivers/net/wireless/hostap/hostap_80211_tx.c:180:			memcpy(&hdr.addr1, iface->u.wds.remote_addr,
> 			       ETH_ALEN);
> drivers/net/wireless/hostap/hostap_80211_tx.c:195:		memcpy(&hdr.addr1, to_assoc_ap ?
> 		       local->assoc_ap_addr : local->bssid, ETH_ALEN);
> drivers/net/wireless/rtlwifi/cam.c:305:			memcpy(rtlpriv->sec.hwsec_cam_sta_addr[entry_idx],
> 			       sta_addr, ETH_ALEN);
> drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c:3181:			memcpy(&cfg->pmk_list->pmkids.pmkid[i].BSSID,
> 			       &cfg->pmk_list->pmkids.pmkid[i + 1].BSSID,
> drivers/net/wireless/airo.c:3657:			memcpy(&micbuf,
> 				ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2,
> drivers/net/wireless/airo.c:3667:		memcpy(buffer + ETH_ALEN * 2,
> 			ai->rxfids[0].virtual_host_addr + ETH_ALEN * 2 + off,
> drivers/net/wireless/airo.c:7189:			memcpy(address[i].sa_data,
> 			       status_rid.bssid[i], ETH_ALEN);
> drivers/net/wireless/libertas/cmd.c:156:			memcpy(priv->mesh_dev->dev_addr,
> 				priv->current_addr, ETH_ALEN);
> drivers/net/wireless/rndis_wlan.c:1630:			memcpy(mc_addrs + i++ * ETH_ALEN,
> 			       ha->addr, ETH_ALEN);
> drivers/net/wireless/ti/wl1251/main.c:757:			memcpy(fp->mc_list[fp->mc_list_length],
> 					ha->addr, ETH_ALEN);
> drivers/net/wireless/ti/wlcore/main.c:3169:			memcpy(fp->mc_list[fp->mc_list_length],
> 					ha->addr, ETH_ALEN);
> drivers/net/wireless/mwifiex/sta_cmdresp.c:845:		memcpy(priv->curr_bss_params.bss_descriptor.mac_address,
> 		       ibss_coal_resp->bssid, ETH_ALEN);
> drivers/net/wireless/mwifiex/sta_rx.c:251:		memcpy(ta, priv->curr_bss_params.bss_descriptor.mac_address,
> 		       ETH_ALEN);
> drivers/net/wireless/mwifiex/uap_event.c:132:		memcpy(priv->netdev->dev_addr, adapter->event_body + 2,
> 		       ETH_ALEN);
> drivers/net/wireless/mwifiex/cfg80211.c:2881:		memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr,
> 				ETH_ALEN);
> drivers/net/wireless/mwifiex/cfg80211.c:2891:		memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr,
> 				ETH_ALEN);
> drivers/net/wireless/mwifiex/sta_cmd.c:411:		memcpy(cmd->params.mac_addr.mac_addr, priv->curr_addr,
> 		       ETH_ALEN);
> drivers/net/wireless/mwifiex/sta_cmd.c:437:	memcpy(mcast_addr->mac_list, mcast_list->mac_list,
> 	       mcast_list->num_multicast_addr * ETH_ALEN);
> drivers/net/wireless/mwifiex/11n_rxreorder.c:483:	memcpy(add_ba_rsp->peer_mac_addr, cmd_addba_req->peer_mac_addr,
> 	       ETH_ALEN);
> drivers/net/wireless/mwifiex/sta_event.c:118:	memcpy(priv->prev_bssid,
> 	       priv->curr_bss_params.bss_descriptor.mac_address, ETH_ALEN);
> drivers/net/wireless/mwifiex/scan.c:873:			memcpy(bssid_tlv->bssid, user_scan_in->specific_bssid,
> 			       ETH_ALEN);
> drivers/net/wireless/mwifiex/join.c:1092:	memcpy(&adhoc_join->bss_descriptor.bssid,
> 	       &bss_desc->mac_address, ETH_ALEN);
> drivers/net/wireless/mwifiex/join.c:1231:		memcpy(bss_desc->mac_address,
> 		       adhoc_result->bssid, ETH_ALEN);
> drivers/net/wireless/mwifiex/join.c:1390:		memcpy(mac_address,
> 		       priv->curr_bss_params.bss_descriptor.mac_address,
> drivers/net/wireless/libertas_tf/cmd.c:333:	memcpy(cmd.maclist, priv->multicastlist,
> 	       priv->nr_of_multicastmacaddr * ETH_ALEN);
> drivers/net/wireless/libertas_tf/main.c:284:	memcpy(txpd->tx_dest_addr_high, skb->data + sizeof(struct txpd) + 4,
> 		ETH_ALEN);
> drivers/net/usb/lg-vl600.c:197:			memcpy(ethhdr->h_source,
> 					&buf->data[sizeof(*ethhdr) + 0x8],
> drivers/net/usb/lg-vl600.c:198:			memcpy(ethhdr->h_dest,
> 					&buf->data[sizeof(*ethhdr) + 0x12],
> drivers/s390/net/qeth_l3_main.c:1489:		memcpy(card->dev->dev_addr,
> 			cmd->data.create_destroy_addr.unique_id, ETH_ALEN);
> drivers/infiniband/hw/mlx4/main.c:869:		memcpy(mlx4_spec->eth.dst_mac, ib_spec->eth.val.dst_mac,
> 		       ETH_ALEN);
> drivers/infiniband/hw/mlx4/main.c:870:		memcpy(mlx4_spec->eth.dst_mac_msk, ib_spec->eth.mask.dst_mac,
> 		       ETH_ALEN);
> net/ethernet/eth.c:253:	memcpy(((u8 *) hh->hh_data) + HH_DATA_OFF(sizeof(struct ethhdr)),
> 	       haddr, ETH_ALEN);
> net/mac80211/mlme.c:701:		memcpy(mgmt->u.reassoc_req.current_ap, assoc_data->prev_bssid,
> 		       ETH_ALEN);
> net/mac80211/iface.c:563:		memcpy(dev->dev_addr,
> 		       local->hw.wiphy->perm_addr,
> net/mac80211/iface.c:1582:				memcpy(perm_addr,
> 				       local->hw.wiphy->addresses[i].addr,
> net/wireless/nl80211.c:9033:	memcpy(cfg->dst_mac, nla_data(tb[NL80211_WOWLAN_TCP_DST_MAC]),
> 	       ETH_ALEN);
> net/wireless/wext-spy.c:57:			memcpy(spydata->spy_address[i], address[i].sa_data,
> 			       ETH_ALEN);
> net/bluetooth/bnep/core.c:387:		memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb),
> 								ETH_ALEN);
> net/bluetooth/bnep/core.c:388:		memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source,
> 								ETH_ALEN + 2);
> net/bluetooth/bnep/core.c:392:		memcpy(__skb_put(nskb, ETH_ALEN * 2), skb_mac_header(skb),
> 								ETH_ALEN * 2);
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-21 21:44         ` Mateusz Kulikowski
@ 2015-04-21 22:27           ` Joe Perches
  2015-04-23 19:53             ` Mateusz Kulikowski
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2015-04-21 22:27 UTC (permalink / raw)
  To: Mateusz Kulikowski; +Cc: apw, davem, netdev, linux-kernel

On Tue, 2015-04-21 at 23:44 +0200, Mateusz Kulikowski wrote:
> On 21.04.2015 23:22, Joe Perches wrote:
> > On Tue, 2015-04-21 at 22:57 +0200, Mateusz Kulikowski wrote:
> (...)
> >>
> >> Perhaps it would be smarter to use (for both patches) $stat instead.
> >> This applies also to existing checks (like PREFER_ETHER_ADDR_COPY) 
> >> so we can catch calls formatted like
> >>
> >> memset(very.long.structure->something.something_different42,
> >>        0xFF, ETH_ALEN);
> > 
> > Yes, likely that's true.
> > 
> > checkpatch couldn't --fix it easily unless it's on a
> > single line though.
> 
> True, True; If you prefer $line and ability to --fix - I'll use that in v3

I suppose you could do both $line and $stat
and the fix would only work when it's on a
single line.

Perhaps something like this would work:

	if ($line =~ /whatever/ ||
	    (defined($stat) && $stat =~ /whatever/)) {
		if (WARN(...) &&
		    $fix) {
			fixed[$fixlinenr] =~ s/whatever/appropriate/;
		}
	}

No worries about getting 'round the the list.
It'll get got eventually.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-21 22:27           ` Joe Perches
@ 2015-04-23 19:53             ` Mateusz Kulikowski
  2015-04-23 23:54               ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Mateusz Kulikowski @ 2015-04-23 19:53 UTC (permalink / raw)
  To: Joe Perches; +Cc: apw, davem, netdev, linux-kernel

On 22.04.2015 00:27, Joe Perches wrote:
> On Tue, 2015-04-21 at 23:44 +0200, Mateusz Kulikowski wrote:
>> On 21.04.2015 23:22, Joe Perches wrote:
>>> On Tue, 2015-04-21 at 22:57 +0200, Mateusz Kulikowski wrote:
>> (...)
(...)
>> True, True; If you prefer $line and ability to --fix - I'll use that in v3
> 
> I suppose you could do both $line and $stat
> and the fix would only work when it's on a
> single line.
> 
> Perhaps something like this would work:
> 
> 	if ($line =~ /whatever/ ||
> 	    (defined($stat) && $stat =~ /whatever/)) {
> 		if (WARN(...) &&
> 		    $fix) {
> 			fixed[$fixlinenr] =~ s/whatever/appropriate/;
> 		}
> 	}

Isn't it enough to just match $stat and do fix for line (that in 
some cases will just not match)?


One more thing
I noticed funny behavior about $stat matches - 
it reports the same error several times (including as "scope" whole file)
Is it feature or "feature" or I missed something?

Ex. file:
-------------- cut
int foo(void)
{
baz();
memset(a, b, 0);
bar();
}
-------------- cut

Output of (@master) 

-------------- cut
$ scripts/checkpatch.pl -f test42.c --types MEMSET
ERROR: memset to 0's uses 0 as the 2nd argument, not the 3rd
#1: FILE: test42.c:1:
+int foo(void)
 {
 baz();
 memset(a, b, 0);
 bar();
 }

ERROR: memset to 0's uses 0 as the 2nd argument, not the 3rd
#2: FILE: test42.c:2:
+{
 baz();
 memset(a, b, 0);
 bar();
 }

ERROR: memset to 0's uses 0 as the 2nd argument, not the 3rd
#4: FILE: test42.c:4:
+memset(a, b, 0);

total: 3 errors, 0 warnings, 6 lines checked

NOTE: Used message types: MEMSET

test42.c has style problems, please review.

If any of these errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
--------------cut

Regards,
Mateusz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-23 19:53             ` Mateusz Kulikowski
@ 2015-04-23 23:54               ` Joe Perches
  2015-04-23 23:55                 ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2015-04-23 23:54 UTC (permalink / raw)
  To: Mateusz Kulikowski; +Cc: apw, davem, netdev, linux-kernel

On Thu, 2015-04-23 at 21:53 +0200, Mateusz Kulikowski wrote:
> On 22.04.2015 00:27, Joe Perches wrote:
> > On Tue, 2015-04-21 at 23:44 +0200, Mateusz Kulikowski wrote:
> >> On 21.04.2015 23:22, Joe Perches wrote:
> >>> On Tue, 2015-04-21 at 22:57 +0200, Mateusz Kulikowski wrote:
> >> (...)
> (...)
> >> True, True; If you prefer $line and ability to --fix - I'll use that in v3
> > 
> > I suppose you could do both $line and $stat
> > and the fix would only work when it's on a
> > single line.
> > 
> > Perhaps something like this would work:
> > 
> > 	if ($line =~ /whatever/ ||
> > 	    (defined($stat) && $stat =~ /whatever/)) {
> > 		if (WARN(...) &&
> > 		    $fix) {
> > 			fixed[$fixlinenr] =~ s/whatever/appropriate/;
> > 		}
> > 	}
> 
> Isn't it enough to just match $stat and do fix for line (that in 
> some cases will just not match)?

Yeah, that'd work too.

> One more thing
> I noticed funny behavior about $stat matches - 
> it reports the same error several times (including as "scope" whole file)
> Is it feature or "feature" or I missed something?

You have to make sure the first character of $stat is a +

	if ($stat =~ /\+(?:.*)\bmem<foo>




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  2015-04-23 23:54               ` Joe Perches
@ 2015-04-23 23:55                 ` Joe Perches
  0 siblings, 0 replies; 11+ messages in thread
From: Joe Perches @ 2015-04-23 23:55 UTC (permalink / raw)
  To: Mateusz Kulikowski; +Cc: apw, davem, netdev, linux-kernel

On Thu, 2015-04-23 at 16:54 -0700, Joe Perches wrote:
> On Thu, 2015-04-23 at 21:53 +0200, Mateusz Kulikowski wrote:
> > I noticed funny behavior about $stat matches - 
> > it reports the same error several times (including as "scope" whole file)
> > Is it feature or "feature" or I missed something?
> 
> You have to make sure the first character of $stat is a +
> 
> 	if ($stat =~ /\+(?:.*)\bmem<foo>

Make that

	if ($stat =~ /^\+(?:.*)\bmem<foo>



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-04-23 23:55 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-19 22:16 [PATCH v2 0/2] checkpatch: new ethernet address manipulation checks Mateusz Kulikowski
2015-04-19 22:16 ` [PATCH v2 1/2] checkpatch: suggest using ether_addr_equal*() Mateusz Kulikowski
2015-04-19 22:16 ` [PATCH v2 2/2] checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr() Mateusz Kulikowski
2015-04-20  1:13   ` Joe Perches
2015-04-21 20:57     ` Mateusz Kulikowski
2015-04-21 21:22       ` Joe Perches
2015-04-21 21:44         ` Mateusz Kulikowski
2015-04-21 22:27           ` Joe Perches
2015-04-23 19:53             ` Mateusz Kulikowski
2015-04-23 23:54               ` Joe Perches
2015-04-23 23:55                 ` Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).