aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index fb766d906148..588b473194a8 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1948,8 +1948,12 @@ again:
1948 goto again; 1948 goto again;
1949 } 1949 }
1950out_unlock: 1950out_unlock:
1951 if (pt_prev) 1951 if (pt_prev) {
1952 pt_prev->func(skb2, skb->dev, pt_prev, skb->dev); 1952 if (!skb_orphan_frags_rx(skb2, GFP_ATOMIC))
1953 pt_prev->func(skb2, skb->dev, pt_prev, skb->dev);
1954 else
1955 kfree_skb(skb2);
1956 }
1953 rcu_read_unlock(); 1957 rcu_read_unlock();
1954} 1958}
1955EXPORT_SYMBOL_GPL(dev_queue_xmit_nit); 1959EXPORT_SYMBOL_GPL(dev_queue_xmit_nit);
@@ -3892,6 +3896,7 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb,
3892 __skb_pull(skb, off); 3896 __skb_pull(skb, off);
3893 else if (off < 0) 3897 else if (off < 0)
3894 __skb_push(skb, -off); 3898 __skb_push(skb, -off);
3899 skb->mac_header += off;
3895 3900
3896 switch (act) { 3901 switch (act) {
3897 case XDP_REDIRECT: 3902 case XDP_REDIRECT: