summaryrefslogtreecommitdiffstats
path: root/net/ipv4/ip_gre.c
diff options
context:
space:
mode:
authorDavid S. Miller2012-01-25 00:23:30 +0100
committerDavid S. Miller2012-01-25 00:23:30 +0100
commit61d57f87f3fb04a305f22befabd042ffbec8b852 (patch)
treeef0596f29c69f50dc2fed1bbc9bf9cfcd879cdd7 /net/ipv4/ip_gre.c
parentipip: Fix bug added to ipip_tunnel_xmit(). (diff)
downloadkernel-qcow2-linux-61d57f87f3fb04a305f22befabd042ffbec8b852.tar.gz
kernel-qcow2-linux-61d57f87f3fb04a305f22befabd042ffbec8b852.tar.xz
kernel-qcow2-linux-61d57f87f3fb04a305f22befabd042ffbec8b852.zip
ip_gre: Fix bug added to ipgre_tunnel_xmit().
We can remove the rt_gateway == 0 check but we shouldn't remove the 'dst' initialization too. Noticed by Eric Dumazet. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_gre.c')
-rw-r--r--net/ipv4/ip_gre.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index fc213350a6ed..05f7419ed7c5 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -724,8 +724,10 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev
goto tx_error;
}
- if (skb->protocol == htons(ETH_P_IP))
+ if (skb->protocol == htons(ETH_P_IP)) {
rt = skb_rtable(skb);
+ dst = rt->rt_gateway;
+ }
#if IS_ENABLED(CONFIG_IPV6)
else if (skb->protocol == htons(ETH_P_IPV6)) {
struct neighbour *neigh = dst_get_neighbour_noref(skb_dst(skb));