diff mbox

[net-next,v2,0/6] slight optimization of addr compare for some modules

Message ID 52B173AB.6020901@huawei.com
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

Ding Tianhong Dec. 18, 2013, 10:06 a.m. UTC
On 2013/12/18 17:17, Joe Perches wrote:
> On Wed, 2013-12-18 at 16:47 +0800, Ding Tianhong wrote:
>> On 2013/12/17 9:58, Ding Tianhong wrote:
>>> On 2013/12/17 1:25, Joe Perches wrote:
>>>> These should still be inspected for appropriate use of
>>>> ether_addr_equal or ether_addr_equal_unaligned, but a
>>>> better cocci input sp-file is:
>>>>
>>>> $ cat ether_addr_equal_unaligned.cocci 
>>>> @@
>>>> expression e1;
>>>> expression e2;
>>>> @@
> []
>> There are too many places need to be changed, should I make it in one patch or several pathset,
>> pls give me some advise. thanks
> 
> Separate per-maintainer patches are generally good.
> It can take several attempts to get these applied
> in all the various trees.
> 
> So maybe 1 patch for each of most of these.  Maybe
> some of these like drivers/media, drivers/mtd and
> drivers/staging could probably be single patches.
> 

Hi Joe:

I found there is a bug in spatch, it could not deal with 
-       memcmp(e1, e2, \(6\|ETH_ALEN\)) != 0
+       !ether_addr_equal_unaligned(e1, e2)





Regards
Ding 

> 


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Joe Perches Dec. 18, 2013, 4:51 p.m. UTC | #1
On Wed, 2013-12-18 at 18:06 +0800, Ding Tianhong wrote:
> On 2013/12/18 17:17, Joe Perches wrote:
> > On Wed, 2013-12-18 at 16:47 +0800, Ding Tianhong wrote:
> >> On 2013/12/17 9:58, Ding Tianhong wrote:
> >>> On 2013/12/17 1:25, Joe Perches wrote:
> >>>> These should still be inspected for appropriate use of
> >>>> ether_addr_equal or ether_addr_equal_unaligned, but a
> >>>> better cocci input sp-file is:
> >>>>
> >>>> $ cat ether_addr_equal_unaligned.cocci 
> >>>> @@
> >>>> expression e1;
> >>>> expression e2;
> >>>> @@
> > []
> >> There are too many places need to be changed, should I make it in one patch or several pathset,
> >> pls give me some advise. thanks
> > 
> > Separate per-maintainer patches are generally good.
> > It can take several attempts to get these applied
> > in all the various trees.
> > 
> > So maybe 1 patch for each of most of these.  Maybe
> > some of these like drivers/media, drivers/mtd and
> > drivers/staging could probably be single patches.
> > 
> 
> Hi Joe:
> 
> I found there is a bug in spatch, it could not deal with 
> -       memcmp(e1, e2, \(6\|ETH_ALEN\)) != 0
> +       !ether_addr_equal_unaligned(e1, e2)

Not an spatch bug but a defect in the ordering of
transforms in the ether_addr_equal_unaligned.cocci file

This should be better:

$ cat ether_addr_equal_unaligned.cocci
@@
expression e1;
expression e2;
@@

-	memcmp(e1, e2, \(6\|ETH_ALEN\)) == 0
+	ether_addr_equal_unaligned(e1, e2)

@@
expression e1;
expression e2;
@@

-	memcmp(e1, e2, \(6\|ETH_ALEN\)) != 0
+	!ether_addr_equal_unaligned(e1, e2)

@@
expression e1;
expression e2;
@@

-	!memcmp(e1, e2, \(6\|ETH_ALEN\))
+	ether_addr_equal_unaligned(e1, e2)

@@
expression e1;
expression e2;
@@

-	memcmp(e1, e2, \(6\|ETH_ALEN\))
+	!ether_addr_equal_unaligned(e1, e2)



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ding Tianhong Dec. 19, 2013, 1:24 a.m. UTC | #2
On 2013/12/19 0:51, Joe Perches wrote:
> On Wed, 2013-12-18 at 18:06 +0800, Ding Tianhong wrote:
>> On 2013/12/18 17:17, Joe Perches wrote:
>>> On Wed, 2013-12-18 at 16:47 +0800, Ding Tianhong wrote:
>>>> On 2013/12/17 9:58, Ding Tianhong wrote:
>>>>> On 2013/12/17 1:25, Joe Perches wrote:
>>>>>> These should still be inspected for appropriate use of
>>>>>> ether_addr_equal or ether_addr_equal_unaligned, but a
>>>>>> better cocci input sp-file is:
>>>>>>
>>>>>> $ cat ether_addr_equal_unaligned.cocci 
>>>>>> @@
>>>>>> expression e1;
>>>>>> expression e2;
>>>>>> @@
>>> []
>>>> There are too many places need to be changed, should I make it in one patch or several pathset,
>>>> pls give me some advise. thanks
>>>
>>> Separate per-maintainer patches are generally good.
>>> It can take several attempts to get these applied
>>> in all the various trees.
>>>
>>> So maybe 1 patch for each of most of these.  Maybe
>>> some of these like drivers/media, drivers/mtd and
>>> drivers/staging could probably be single patches.
>>>
>>
>> Hi Joe:
>>
>> I found there is a bug in spatch, it could not deal with 
>> -       memcmp(e1, e2, \(6\|ETH_ALEN\)) != 0
>> +       !ether_addr_equal_unaligned(e1, e2)
> 
> Not an spatch bug but a defect in the ordering of
> transforms in the ether_addr_equal_unaligned.cocci file
> 
> This should be better:
> 
> $ cat ether_addr_equal_unaligned.cocci
> @@
> expression e1;
> expression e2;
> @@
> 
> -	memcmp(e1, e2, \(6\|ETH_ALEN\)) == 0
> +	ether_addr_equal_unaligned(e1, e2)
> 
> @@
> expression e1;
> expression e2;
> @@
> 
> -	memcmp(e1, e2, \(6\|ETH_ALEN\)) != 0
> +	!ether_addr_equal_unaligned(e1, e2)
> 
> @@
> expression e1;
> expression e2;
> @@
> 
> -	!memcmp(e1, e2, \(6\|ETH_ALEN\))
> +	ether_addr_equal_unaligned(e1, e2)
> 
> @@
> expression e1;
> expression e2;
> @@
> 
> -	memcmp(e1, e2, \(6\|ETH_ALEN\))
> +	!ether_addr_equal_unaligned(e1, e2)
> 
> 
> 

Yes, it could works well, thanks a lot.

Regards
Ding

> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff -u -p a/caif/cfrfml.c b/caif/cfrfml.c
--- a/caif/cfrfml.c
+++ b/caif/cfrfml.c
@@ -79,7 +79,7 @@  static struct cfpkt *rfm_append(struct c
                return NULL;

        /* Verify correct header */
-       if (memcmp(seghead, rfml->seghead, 6) != 0)
+       if (!ether_addr_equal_unaligned(seghead, rfml->seghead) != 0)
                return NULL;

        tmppkt = cfpkt_append(rfml->incomplete_frm, pkt,