--- /dev/null
+From chrisw@osdl.org Wed Dec 21 09:28:13 2005
+Date: Wed, 14 Dec 2005 13:02:35 -0800 (PST)
+Message-Id: <20051214.130235.21310957.davem@davemloft.net>
+To: stable@kernel.org
+From: "David S. Miller" <davem@davemloft.net>
+Cc: herbert@gondor.apana.org.au
+Subject: [GRE]: Fix hardware checksum modification
+
+From: Herbert Xu <herbert@gondor.apana.org.au>
+
+The skb_postpull_rcsum introduced a bug to the checksum modification.
+Although the length pulled is offset bytes, the origin of the pulling
+is the GRE header, not the IP header.
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@redhat.com>
+---
+
+ net/ipv4/ip_gre.c | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.14.y/net/ipv4/ip_gre.c
+===================================================================
+--- linux-2.6.14.y.orig/net/ipv4/ip_gre.c
++++ linux-2.6.14.y/net/ipv4/ip_gre.c
+@@ -617,7 +617,7 @@ static int ipgre_rcv(struct sk_buff *skb
+
+ skb->mac.raw = skb->nh.raw;
+ skb->nh.raw = __pskb_pull(skb, offset);
+- skb_postpull_rcsum(skb, skb->mac.raw, offset);
++ skb_postpull_rcsum(skb, skb->h.raw, offset);
+ memset(&(IPCB(skb)->opt), 0, sizeof(struct ip_options));
+ skb->pkt_type = PACKET_HOST;
+ #ifdef CONFIG_NET_IPGRE_BROADCAST