diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2019-11-04 11:32:04 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-11-04 11:32:04 +0100 |
commit | ca8888d7ae6fa18454c9e4f192c56bc6c8ca9b33 (patch) | |
tree | c2b86b162f8fc2adf8a98f7e074500bee155d603 /net/core/lwt_bpf.c | |
parent | db616173d787395787ecc93eef075fa975227b10 (diff) | |
parent | a99d8080aaf358d5d23581244e5da23b35e340b9 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
to pick up the KVM fix which is required for the NX series.
Diffstat (limited to 'net/core/lwt_bpf.c')
-rw-r--r-- | net/core/lwt_bpf.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/core/lwt_bpf.c b/net/core/lwt_bpf.c index f93785e5833c..74cfb8b5ab33 100644 --- a/net/core/lwt_bpf.c +++ b/net/core/lwt_bpf.c @@ -88,11 +88,16 @@ static int bpf_lwt_input_reroute(struct sk_buff *skb) int err = -EINVAL; if (skb->protocol == htons(ETH_P_IP)) { + struct net_device *dev = skb_dst(skb)->dev; struct iphdr *iph = ip_hdr(skb); + dev_hold(dev); + skb_dst_drop(skb); err = ip_route_input_noref(skb, iph->daddr, iph->saddr, - iph->tos, skb_dst(skb)->dev); + iph->tos, dev); + dev_put(dev); } else if (skb->protocol == htons(ETH_P_IPV6)) { + skb_dst_drop(skb); err = ipv6_stub->ipv6_route_input(skb); } else { err = -EAFNOSUPPORT; |