Message ID | C7895CAA-0AF7-4EED-B9E7-9D8E4A21442B@ipflavors.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Le 05/01/2013 17:19, Romain KUNTZ a écrit : > Commit 299b0767 (ipv6: Fix IPsec slowpath fragmentation problem) Add Steffen into CC, he is the author of this patch and the IPsec maintainer. > has introduced a bug that provokes corrupted packets when Destination > Options or Routing Header Type 2 are used (such as with Mobile IPv6): > rt->rt6i_nfheader_len should be substracted to rt->dst.header_len, > and not to exthdrlen. > > This patch reverts to the original and correct behavior. Successfully > tested with and without IPsec activated for MH packets. > > Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com> > --- > net/ipv6/ip6_output.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c > index 5552d13..0c7c03d 100644 > --- a/net/ipv6/ip6_output.c > +++ b/net/ipv6/ip6_output.c > @@ -1213,10 +1213,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, > if (dst_allfrag(rt->dst.path)) > cork->flags |= IPCORK_ALLFRAG; > cork->length = 0; > - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; > + exthdrlen = (opt ? opt->opt_flen : 0); > length += exthdrlen; > transhdrlen += exthdrlen; > - dst_exthdrlen = rt->dst.header_len; > + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; > } else { > rt = (struct rt6_info *)cork->dst; > fl6 = &inet->cork.fl.u.ip6; > -- 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 Mon, Jan 07, 2013 at 11:49:51AM +0100, Nicolas Dichtel wrote: > Le 05/01/2013 17:19, Romain KUNTZ a écrit : > >Commit 299b0767 (ipv6: Fix IPsec slowpath fragmentation problem) > Add Steffen into CC, he is the author of this patch and the IPsec > maintainer. > > >has introduced a bug that provokes corrupted packets when Destination > >Options or Routing Header Type 2 are used (such as with Mobile IPv6): > >rt->rt6i_nfheader_len should be substracted to rt->dst.header_len, > >and not to exthdrlen. I had no Mobile IPv6 test case, so I likely overlooked this. > > > >This patch reverts to the original and correct behavior. Successfully > >tested with and without IPsec activated for MH packets. > > > >Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com> Thanks for catching! Acked-by: Steffen Klassert <steffen.klassert@secunet.com> -- 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 Jan 5, 2013, at 17:19 , Romain KUNTZ <r.kuntz@ipflavors.com> wrote: > Commit 299b0767 (ipv6: Fix IPsec slowpath fragmentation problem) > has introduced a bug that provokes corrupted packets when Destination > Options or Routing Header Type 2 are used (such as with Mobile IPv6): > rt->rt6i_nfheader_len should be substracted to rt->dst.header_len, > and not to exthdrlen. > > This patch reverts to the original and correct behavior. Successfully > tested with and without IPsec activated for MH packets. > > Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com> > Acked-by: Steffen Klassert <steffen.klassert@secunet.com> > --- > net/ipv6/ip6_output.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c > index 5552d13..0c7c03d 100644 > --- a/net/ipv6/ip6_output.c > +++ b/net/ipv6/ip6_output.c > @@ -1213,10 +1213,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, > if (dst_allfrag(rt->dst.path)) > cork->flags |= IPCORK_ALLFRAG; > cork->length = 0; > - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; > + exthdrlen = (opt ? opt->opt_flen : 0); > length += exthdrlen; > transhdrlen += exthdrlen; > - dst_exthdrlen = rt->dst.header_len; > + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; > } else { > rt = (struct rt6_info *)cork->dst; > fl6 = &inet->cork.fl.u.ip6; > -- > 1.7.2.5 Resending this one adding the 'Acked-by: Steffen Klassert'. Romain-- 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 Jan 11, 2013, at 8:27 , Romain KUNTZ <r.kuntz@ipflavors.com> wrote: > On Jan 5, 2013, at 17:19 , Romain KUNTZ <r.kuntz@ipflavors.com> wrote: >> Commit 299b0767 (ipv6: Fix IPsec slowpath fragmentation problem) >> has introduced a bug that provokes corrupted packets when Destination >> Options or Routing Header Type 2 are used (such as with Mobile IPv6): >> rt->rt6i_nfheader_len should be substracted to rt->dst.header_len, >> and not to exthdrlen. >> >> This patch reverts to the original and correct behavior. Successfully >> tested with and without IPsec activated for MH packets. >> >> Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com> >> Acked-by: Steffen Klassert <steffen.klassert@secunet.com> >> --- >> net/ipv6/ip6_output.c | 4 ++-- >> 1 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c >> index 5552d13..0c7c03d 100644 >> --- a/net/ipv6/ip6_output.c >> +++ b/net/ipv6/ip6_output.c >> @@ -1213,10 +1213,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, >> if (dst_allfrag(rt->dst.path)) >> cork->flags |= IPCORK_ALLFRAG; >> cork->length = 0; >> - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; >> + exthdrlen = (opt ? opt->opt_flen : 0); >> length += exthdrlen; >> transhdrlen += exthdrlen; >> - dst_exthdrlen = rt->dst.header_len; >> + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; >> } else { >> rt = (struct rt6_info *)cork->dst; >> fl6 = &inet->cork.fl.u.ip6; >> -- >> 1.7.2.5 > > Resending this one adding the 'Acked-by: Steffen Klassert'. I noticed in the patchwork that this patch is in state "Changes Requested" (http://patchwork.ozlabs.org/patch/209684/) but did not get any requests for changes. Any issues/comments regarding this patch? Thank you, Romain-- 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/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 5552d13..0c7c03d 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1213,10 +1213,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, if (dst_allfrag(rt->dst.path)) cork->flags |= IPCORK_ALLFRAG; cork->length = 0; - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; + exthdrlen = (opt ? opt->opt_flen : 0); length += exthdrlen; transhdrlen += exthdrlen; - dst_exthdrlen = rt->dst.header_len; + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; } else { rt = (struct rt6_info *)cork->dst; fl6 = &inet->cork.fl.u.ip6;
Commit 299b0767 (ipv6: Fix IPsec slowpath fragmentation problem) has introduced a bug that provokes corrupted packets when Destination Options or Routing Header Type 2 are used (such as with Mobile IPv6): rt->rt6i_nfheader_len should be substracted to rt->dst.header_len, and not to exthdrlen. This patch reverts to the original and correct behavior. Successfully tested with and without IPsec activated for MH packets. Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com> --- net/ipv6/ip6_output.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)