| From foo@baz Fri Nov 7 11:36:50 PST 2014 |
| From: Tom Herbert <therbert@google.com> |
| Date: Thu, 30 Oct 2014 08:40:56 -0700 |
| Subject: gre: Use inner mac length when computing tunnel length |
| |
| From: Tom Herbert <therbert@google.com> |
| |
| [ Upstream commit 14051f0452a2c26a3f4791e6ad6a435e8f1945ff ] |
| |
| Currently, skb_inner_network_header is used but this does not account |
| for Ethernet header for ETH_P_TEB. Use skb_inner_mac_header which |
| handles TEB and also should work with IP encapsulation in which case |
| inner mac and inner network headers are the same. |
| |
| Tested: Ran TCP_STREAM over GRE, worked as expected. |
| |
| Signed-off-by: Tom Herbert <therbert@google.com> |
| Acked-by: Alexander Duyck <alexander.h.duyck@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv4/gre_offload.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/ipv4/gre_offload.c |
| +++ b/net/ipv4/gre_offload.c |
| @@ -51,7 +51,7 @@ static struct sk_buff *gre_gso_segment(s |
| |
| greh = (struct gre_base_hdr *)skb_transport_header(skb); |
| |
| - ghl = skb_inner_network_header(skb) - skb_transport_header(skb); |
| + ghl = skb_inner_mac_header(skb) - skb_transport_header(skb); |
| if (unlikely(ghl < sizeof(*greh))) |
| goto out; |
| |