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)