diff options
author | David S. Miller <davem@davemloft.net> | 2017-09-23 20:16:53 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-09-23 20:16:53 +0300 |
commit | 1f8d31d189cc6ce1e4b972959fda41e790bb92b8 (patch) | |
tree | fd3cca12a29319f073773ac55f7d41cc58e2c73f /net/core/dev.c | |
parent | 3fb5ec06578e4c85d3486b6a73cbeb07960a51ce (diff) | |
parent | cd4175b11685b11c40e31a03e05084cc212b0649 (diff) | |
download | linux-1f8d31d189cc6ce1e4b972959fda41e790bb92b8.tar.xz |
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: |