diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 88927f1a3e4f..b9994898d11b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1862,7 +1862,7 @@ static inline int deliver_skb(struct sk_buff *skb, | |||
1862 | { | 1862 | { |
1863 | if (unlikely(skb_orphan_frags(skb, GFP_ATOMIC))) | 1863 | if (unlikely(skb_orphan_frags(skb, GFP_ATOMIC))) |
1864 | return -ENOMEM; | 1864 | return -ENOMEM; |
1865 | atomic_inc(&skb->users); | 1865 | refcount_inc(&skb->users); |
1866 | return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); | 1866 | return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); |
1867 | } | 1867 | } |
1868 | 1868 | ||
@@ -2484,10 +2484,10 @@ void __dev_kfree_skb_irq(struct sk_buff *skb, enum skb_free_reason reason) | |||
2484 | if (unlikely(!skb)) | 2484 | if (unlikely(!skb)) |
2485 | return; | 2485 | return; |
2486 | 2486 | ||
2487 | if (likely(atomic_read(&skb->users) == 1)) { | 2487 | if (likely(refcount_read(&skb->users) == 1)) { |
2488 | smp_rmb(); | 2488 | smp_rmb(); |
2489 | atomic_set(&skb->users, 0); | 2489 | refcount_set(&skb->users, 0); |
2490 | } else if (likely(!atomic_dec_and_test(&skb->users))) { | 2490 | } else if (likely(!refcount_dec_and_test(&skb->users))) { |
2491 | return; | 2491 | return; |
2492 | } | 2492 | } |
2493 | get_kfree_skb_cb(skb)->reason = reason; | 2493 | get_kfree_skb_cb(skb)->reason = reason; |
@@ -3955,7 +3955,7 @@ static __latent_entropy void net_tx_action(struct softirq_action *h) | |||
3955 | 3955 | ||
3956 | clist = clist->next; | 3956 | clist = clist->next; |
3957 | 3957 | ||
3958 | WARN_ON(atomic_read(&skb->users)); | 3958 | WARN_ON(refcount_read(&skb->users)); |
3959 | if (likely(get_kfree_skb_cb(skb)->reason == SKB_REASON_CONSUMED)) | 3959 | if (likely(get_kfree_skb_cb(skb)->reason == SKB_REASON_CONSUMED)) |
3960 | trace_consume_skb(skb); | 3960 | trace_consume_skb(skb); |
3961 | else | 3961 | else |