ip_gre: Fix bug added to ipgre_tunnel_xmit().
authorDavid S. Miller <davem@davemloft.net>
Tue, 24 Jan 2012 23:23:30 +0000 (18:23 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jan 2012 23:23:30 +0000 (18:23 -0500)
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>
net/ipv4/ip_gre.c

index fc213350a6ed3605e241140b9e74de91bd272028..05f7419ed7c5049f6024b4fd9282de9463ef80d0 100644 (file)
@@ -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));