diff options
| author | David S. Miller <davem@davemloft.net> | 2017-09-23 10:16:53 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-09-23 10:16:53 -0700 |
| commit | 1f8d31d189cc6ce1e4b972959fda41e790bb92b8 (patch) | |
| tree | fd3cca12a29319f073773ac55f7d41cc58e2c73f /net/core/dev.c | |
| parent | Merge branch 'ieee802154-for-davem-2017-09-20' of git://git.kernel.org/pub/sc... (diff) | |
| parent | Merge branch 'parisc-4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git... (diff) | |
| download | linux-1f8d31d189cc6ce1e4b972959fda41e790bb92b8.tar.gz linux-1f8d31d189cc6ce1e4b972959fda41e790bb92b8.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 37d6a3c59e69..97abddd9039a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1948,8 +1948,12 @@ again: goto again; } out_unlock: - if (pt_prev) - pt_prev->func(skb2, skb->dev, pt_prev, skb->dev); + if (pt_prev) { + if (!skb_orphan_frags_rx(skb2, GFP_ATOMIC)) + pt_prev->func(skb2, skb->dev, pt_prev, skb->dev); + else + kfree_skb(skb2); + } rcu_read_unlock(); } EXPORT_SYMBOL_GPL(dev_queue_xmit_nit); @@ -3892,6 +3896,7 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb, __skb_pull(skb, off); else if (off < 0) __skb_push(skb, -off); + skb->mac_header += off; switch (act) { case XDP_REDIRECT: |
