gre: Set inner mac header in gro complete
authorTom Herbert <therbert@google.com>
Sat, 29 Nov 2014 17:59:45 +0000 (09:59 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 6 Dec 2014 05:18:34 +0000 (21:18 -0800)
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>
net/ipv4/gre_offload.c

index bb5947b0ce2dfbd94a0b85a13983c060b2984075..51973ddc05a68463f8f39e779491374f12e5191a 100644 (file)
@@ -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;
 }