From 06ccbaf9a75f461cfd693b936e61f40f8ab35697 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Thu, 9 Oct 2008 12:03:17 -0700 Subject: [PATCH] --- yaml --- r: 112223 b: refs/heads/master c: 64194c31a0b6f5d84703b772113aafc400eeaad6 h: refs/heads/master i: 112221: 2134fac2ed50e8037a079ba6a1851ee28bc9c91f 112219: 1e86cce4d9fe5c5511b646c813139e92d1072be6 112215: d358039cc41dcac6d0b9fa32a5698c577530f058 112207: 85c6a3aa094560479eebe5e2a2ff08ec699867f1 112191: 18889ac128d772310c48c4f3521eca4afc7ad58f v: v3 --- [refs] | 2 +- trunk/include/net/ipip.h | 2 +- trunk/net/ipv4/ip_gre.c | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 4b7c4d3c5628..c1130e13218e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e1a8000228e16212c93b23cfbed4d622e2ec7a6b +refs/heads/master: 64194c31a0b6f5d84703b772113aafc400eeaad6 diff --git a/trunk/include/net/ipip.h b/trunk/include/net/ipip.h index a85bda64b852..fdf9bd743705 100644 --- a/trunk/include/net/ipip.h +++ b/trunk/include/net/ipip.h @@ -37,7 +37,7 @@ struct ip_tunnel_prl_entry #define IPTUNNEL_XMIT() do { \ int err; \ - int pkt_len = skb->len; \ + int pkt_len = skb->len - skb_transport_offset(skb); \ \ skb->ip_summed = CHECKSUM_NONE; \ ip_select_ident(iph, &rt->u.dst, NULL); \ diff --git a/trunk/net/ipv4/ip_gre.c b/trunk/net/ipv4/ip_gre.c index 44ed9487fa15..0d5e35b0ed54 100644 --- a/trunk/net/ipv4/ip_gre.c +++ b/trunk/net/ipv4/ip_gre.c @@ -477,6 +477,7 @@ static int ipgre_rcv(struct sk_buff *skb) struct ip_tunnel *tunnel; int offset = 4; __be16 gre_proto; + unsigned int len; if (!pskb_may_pull(skb, 16)) goto drop_nolock; @@ -567,6 +568,8 @@ static int ipgre_rcv(struct sk_buff *skb) tunnel->i_seqno = seqno + 1; } + len = skb->len; + /* Warning: All skb pointers will be invalidated! */ if (tunnel->dev->type == ARPHRD_ETHER) { if (!pskb_may_pull(skb, ETH_HLEN)) { @@ -581,7 +584,7 @@ static int ipgre_rcv(struct sk_buff *skb) } stats->rx_packets++; - stats->rx_bytes += skb->len; + stats->rx_bytes += len; skb->dev = tunnel->dev; dst_release(skb->dst); skb->dst = NULL; @@ -770,7 +773,7 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) old_iph = ip_hdr(skb); } - skb->transport_header = skb->network_header; + skb_reset_transport_header(skb); skb_push(skb, gre_hlen); skb_reset_network_header(skb); memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));