Hi Julia.

I have a cocci file I'm playing with to do
a conversion of a linux kernel function
compare_ether_addr to ether_addr_equal.

It doesn't transform all the cases and
I can't figure out why.

$ spatch -version
spatch version 1.0.0-rc12 with Python support and with PCRE support

$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
-       !compare_ether_addr(a, b)
+       ether_addr_equal(a, b)

@@
expression a,b;
@@
-       compare_ether_addr(a, b)
+       !ether_addr_equal(a, b)

@@
expression a,b;
@@
-       !ether_addr_equal(a, b) == 0
+       ether_addr_equal(a, b)

@@
expression a,b;
@@
-       !ether_addr_equal(a, b) != 0
+       !ether_addr_equal(a, b)

@@
expression a,b;
@@
-       ether_addr_equal(a, b) == 0
+       !ether_addr_equal(a, b)

@@
expression a,b;
@@
-       ether_addr_equal(a, b) != 0
+       ether_addr_equal(a, b)

@@
expression a,b;
@@
-       !!ether_addr_equal(a, b)
+       ether_addr_equal(a, b)

I run this on net/ using

$ spatch -in_place -sp_file compare_ether_addr.cocci net/

and it leaves a few uses of compare_ether_addr
untransformed.

$ grep -rPw --include=*.[ch] compare_ether_addr net
net/batman-adv/main.h: * note: can't use compare_ether_addr() as it requires 
aligned memory
net/bridge/br_stp_if.c: /* should be aligned on 2 bytes for 
compare_ether_addr() */
net/bridge/br_stp_if.c:/* should be aligned on 2 bytes for compare_ether_addr() 
*/
net/mac80211/rx.c:          (compare_ether_addr(ehdr->h_dest, 
rx->sdata->vif.addr) == 0 ||
net/mac80211/rx.c:           compare_ether_addr(ehdr->h_dest, pae_group_addr) 
== 0))
net/mac80211/sta_info.h:        if (compare_ether_addr(_sta->sta.addr, (_addr)) 
== 0)
net/wireless/util.c:                 !compare_ether_addr(src, addr)))
net/wireless/util.c:    if (likely((compare_ether_addr(payload, rfc1042_header) 
== 0 &&
net/wireless/util.c:               compare_ether_addr(payload, 
bridge_tunnel_header) == 0)) {

If I run spatch on one of the individual files separately,
it doesn't transform either.

$ spatch -in_place -sp_file compare_ether_addr.cocci net/wireless/util.c

Any clue what I'm doing incorrectly or
is it a cocci defect?


_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to