summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Herbert <therbert@google.com>2014-11-29 09:59:45 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-12-16 09:39:04 -0800
commit435dcf66f0136e58e786ee81d69faecbb445b4d6 (patch)
tree323b36ffe7ed1af4d4f98ebe130054e9fcc34a3d
parent8407165b426600915d1409479be237b70a10a759 (diff)
gre: Set inner mac header in gro complete
[ Upstream commit 6fb2a756739aa507c1fd5b8126f0bfc2f070dc46 ] Set the inner mac header to point to the GRE payload when doing GRO. This is needed if we proceed to send the packet through GRE GSO which now uses the inner mac header instead of inner network header to determine the length of encapsulation headers. Fixes: 14051f0452a2 ("gre: Use inner mac length when computing tunnel length") Reported-by: Wolfgang Walter <linux@stwm.de> Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ipv4/gre_offload.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv4/gre_offload.c b/net/ipv4/gre_offload.c
index bb5947b0ce2d..51973ddc05a6 100644
--- a/net/ipv4/gre_offload.c
+++ b/net/ipv4/gre_offload.c
@@ -247,6 +247,9 @@ static int gre_gro_complete(struct sk_buff *skb, int nhoff)
err = ptype->callbacks.gro_complete(skb, nhoff + grehlen);
rcu_read_unlock();
+
+ skb_set_inner_mac_header(skb, nhoff + grehlen);
+
return err;
}