Message ID | 1329962785.15610.8.camel@edumazet-laptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Il 23/02/2012 03:06, Eric Dumazet ha scritto: > Please try following patch. > > diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c > index 534972e..f170933 100644 > --- a/net/ipv4/xfrm4_mode_tunnel.c > +++ b/net/ipv4/xfrm4_mode_tunnel.c > @@ -84,9 +84,11 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) > if (!(x->props.flags& XFRM_STATE_NOECN)) > ipip_ecn_decapsulate(skb); > > - old_mac = skb_mac_header(skb); > - skb_set_mac_header(skb, -skb->mac_len); > - memmove(skb_mac_header(skb), old_mac, skb->mac_len); > + if (skb_mac_header_was_set(skb)) { > + old_mac = skb_mac_header(skb); > + skb_set_mac_header(skb, -skb->mac_len); > + memmove(skb_mac_header(skb), old_mac, skb->mac_len); > + } > skb_reset_network_header(skb); > err = 0; Wow, thanks! It will try it as soon as possible tomorrow, going sleeping now :) Niccolò -- 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
Il 23/02/2012 03:06, Eric Dumazet ha scritto: > Thanks ! > > Please try following patch. > > diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c > index 534972e..f170933 100644 > --- a/net/ipv4/xfrm4_mode_tunnel.c > +++ b/net/ipv4/xfrm4_mode_tunnel.c > @@ -84,9 +84,11 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) > if (!(x->props.flags& XFRM_STATE_NOECN)) > ipip_ecn_decapsulate(skb); > > - old_mac = skb_mac_header(skb); > - skb_set_mac_header(skb, -skb->mac_len); > - memmove(skb_mac_header(skb), old_mac, skb->mac_len); > + if (skb_mac_header_was_set(skb)) { > + old_mac = skb_mac_header(skb); > + skb_set_mac_header(skb, -skb->mac_len); > + memmove(skb_mac_header(skb), old_mac, skb->mac_len); > + } > skb_reset_network_header(skb); > err = 0; > Your patch does solve the problem, thanks! Niccolò -- 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/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c index 534972e..f170933 100644 --- a/net/ipv4/xfrm4_mode_tunnel.c +++ b/net/ipv4/xfrm4_mode_tunnel.c @@ -84,9 +84,11 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) if (!(x->props.flags & XFRM_STATE_NOECN)) ipip_ecn_decapsulate(skb); - old_mac = skb_mac_header(skb); - skb_set_mac_header(skb, -skb->mac_len); - memmove(skb_mac_header(skb), old_mac, skb->mac_len); + if (skb_mac_header_was_set(skb)) { + old_mac = skb_mac_header(skb); + skb_set_mac_header(skb, -skb->mac_len); + memmove(skb_mac_header(skb), old_mac, skb->mac_len); + } skb_reset_network_header(skb); err = 0;