Commit 861aa6d56de8147249c8a04a4e87fb7c3600cca1

Authored by Isaku Yamahata
Committed by David S. Miller
1 parent a49675988c

ipv4/ip_gre: set transport header correctly to gre header

ipgre_tunnel_xmit() incorrectly sets transport header to inner payload
instead of GRE header. It seems copy-and-pasted from ipip.c.
So set transport header to gre header.
(In ipip case the transport header is the inner ip header, so that's
correct.)

Found by inspection. In practice the incorrect transport header
doesn't matter because the skb usually is sent to another net_device
or socket, so the transport header isn't referenced.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

... ... @@ -912,9 +912,9 @@
912 912 /* Warning : tiph value might point to freed memory */
913 913 }
914 914  
915   - skb_reset_transport_header(skb);
916 915 skb_push(skb, gre_hlen);
917 916 skb_reset_network_header(skb);
  917 + skb_set_transport_header(skb, sizeof(*iph));
918 918 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
919 919 IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED |
920 920 IPSKB_REROUTED);