netdev
[Top] [All Lists]

Re: kfree_skb: unnecessary check ?

To: kuznet@xxxxxxxxxxxxx
Subject: Re: kfree_skb: unnecessary check ?
From: Patrick McHardy <kaber@xxxxxxxxx>
Date: Wed, 19 Jun 2002 23:32:19 +0200
Cc: netdev@xxxxxxxxxxx
References: <200206192026.AAA17502@xxxxxxxxxxxxx>
Sender: owner-netdev@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020412 Debian/0.9.9-6
kuznet@xxxxxxxxxxxxx wrote:

Hello!

Is atomic_dec_and_test really necessary ? atomic_dec_and_test only returns true if its argument has hit zero, so it was 1 before. If atomic_dec is only a bit cheaper than atomic_dec_and_test (which i guess it is), wouldn't it make more sense to use something like this:


Does the prefix "atomic" not scare you? :-)


static inline void kfree_skb(struct sk_buff *skb)
{
   if (atomic_read(&skb->users) == 1)
       __kfree(skb);
   else
       atomic_dec(&skb->users);
}


     else if (atomic_dec_and_test(&skb->users))
           __kfree_skb(skb);

If you still do not understand think why it does not look like:

static inline void kfree_skb(struct sk_buff *skb)
{
   int users = skb->users;
   if (users == 1)
       __kfree(skb);
   else
       skb->users = users - 1;
}

Alexey


Hehe got it :)
Thanks
Patrick


<Prev in Thread] Current Thread [Next in Thread>