summaryrefslogtreecommitdiff
path: root/include/linux/skbuff.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@kernel.bkbits.net>2005-02-05 10:49:13 -0800
committerDavid S. Miller <davem@kernel.bkbits.net>2005-02-05 10:49:13 -0800
commit077a63ea307ab78be154e6491a779794cc80cc18 (patch)
tree82647081a7e544d59a782f374f77027ba069829c /include/linux/skbuff.h
parentb8a743970378fc8e3206b1b4fcdbecc5f37732f5 (diff)
parent9eabad0207272c6cc0d50a067732ffc8d9a22f6f (diff)
Merge davem@nuts.davemloft.net:/disk1/BK/net-2.6
into kernel.bkbits.net:/home/davem/net-2.6
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r--include/linux/skbuff.h14
1 files changed, 5 insertions, 9 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index a6b744bccdc8..23e0b48b79a4 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -353,15 +353,11 @@ static inline struct sk_buff *skb_get(struct sk_buff *skb)
*/
static inline void kfree_skb(struct sk_buff *skb)
{
- if (atomic_read(&skb->users) == 1 || atomic_dec_and_test(&skb->users))
- __kfree_skb(skb);
-}
-
-/* Use this if you didn't touch the skb state [for fast switching] */
-static inline void kfree_skb_fast(struct sk_buff *skb)
-{
- if (atomic_read(&skb->users) == 1 || atomic_dec_and_test(&skb->users))
- kfree_skbmem(skb);
+ if (likely(atomic_read(&skb->users) == 1))
+ smp_rmb();
+ else if (likely(!atomic_dec_and_test(&skb->users)))
+ return;
+ __kfree_skb(skb);
}
/**