Message ID | 1369329033.3301.389.camel@edumazet-glaptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On 05/23/2013 08:10 PM, Eric Dumazet wrote: > On Thu, 2013-05-23 at 08:53 -0700, Eric Dumazet wrote: >> On Thu, 2013-05-23 at 11:47 +0300, Daniel Petre wrote: >> >>> >>> Hello again Eric, >>> we applied the little patch from: >>> http://lkml.indiana.edu/hypermail/linux/kernel/1007.0/00961.html >>> we have flapped the link few times and everything recovered smooth. >>> >> >> Thats a very good catch, now we have to fix the bug at the right place. > > > Please try the following patch : we have compiled it, tested it few times and.. nothing evil happens anymore! > > diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c > index 91d66db..563358e 100644 > --- a/net/ipv4/ip_gre.c > +++ b/net/ipv4/ip_gre.c > @@ -795,6 +795,7 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev > > if (dev->type == ARPHRD_ETHER) > IPCB(skb)->flags = 0; > + memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); > > if (dev->header_ops && dev->type == ARPHRD_IPGRE) { > gre_hlen = 0; > @@ -952,7 +953,6 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev > skb_push(skb, gre_hlen); > skb_reset_network_header(skb); > skb_set_transport_header(skb, sizeof(*iph)); > - memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); > IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED | > IPSKB_REROUTED); > skb_dst_drop(skb); > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 2013-05-24 at 12:40 +0300, Daniel Petre wrote: > On 05/23/2013 08:10 PM, Eric Dumazet wrote: > > we have compiled it, tested it few times and.. nothing evil happens anymore! Thanks for the report. I'll cook the various variants of the patch. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 91d66db..563358e 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -795,6 +795,7 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev if (dev->type == ARPHRD_ETHER) IPCB(skb)->flags = 0; + memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); if (dev->header_ops && dev->type == ARPHRD_IPGRE) { gre_hlen = 0; @@ -952,7 +953,6 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev skb_push(skb, gre_hlen); skb_reset_network_header(skb); skb_set_transport_header(skb, sizeof(*iph)); - memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED | IPSKB_REROUTED); skb_dst_drop(skb);