Message ID | 1413408802-21052-1-git-send-email-xiyou.wangcong@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, 2014-10-15 at 14:33 -0700, Cong Wang wrote: > From: Cong Wang <cwang@twopensource.com> > > commit 971f10eca186cab238c49da ("tcp: better TCP_SKB_CB layout to reduce cache line misses") > missed that cookie_v4_check() still calls ip_options_echo() which uses > IPCB(). It should use TCPCB() at TCP layer, so call __ip_options_echo() > instead. > > Fixes: commit 971f10eca186cab238c49da ("tcp: better TCP_SKB_CB layout to reduce cache line misses") > Cc: Krzysztof Kolasa <kkolasa@winsoft.pl> > Cc: Eric Dumazet <edumazet@google.com> > Reported-by: Krzysztof Kolasa <kkolasa@winsoft.pl> > Tested-by: Krzysztof Kolasa <kkolasa@winsoft.pl> > Signed-off-by: Cong Wang <cwang@twopensource.com> > Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> > --- > net/ipv4/syncookies.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c > index 0431a8f..7e7401c 100644 > --- a/net/ipv4/syncookies.c > +++ b/net/ipv4/syncookies.c > @@ -321,7 +321,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, > int opt_size = sizeof(struct ip_options_rcu) + opt->optlen; > > ireq->opt = kmalloc(opt_size, GFP_ATOMIC); > - if (ireq->opt != NULL && ip_options_echo(&ireq->opt->opt, skb)) { > + if (ireq->opt != NULL && __ip_options_echo(&ireq->opt->opt, skb, opt)) { > kfree(ireq->opt); > ireq->opt = NULL; > } Signed-off-by: Eric Dumazet <edumazet@google.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
From: Cong Wang <xiyou.wangcong@gmail.com> Date: Wed, 15 Oct 2014 14:33:20 -0700 > From: Cong Wang <cwang@twopensource.com> > > commit 971f10eca186cab238c49da ("tcp: better TCP_SKB_CB layout to reduce cache line misses") > missed that cookie_v4_check() still calls ip_options_echo() which uses > IPCB(). It should use TCPCB() at TCP layer, so call __ip_options_echo() > instead. > > Fixes: commit 971f10eca186cab238c49da ("tcp: better TCP_SKB_CB layout to reduce cache line misses") > Cc: Krzysztof Kolasa <kkolasa@winsoft.pl> > Cc: Eric Dumazet <edumazet@google.com> > Reported-by: Krzysztof Kolasa <kkolasa@winsoft.pl> > Tested-by: Krzysztof Kolasa <kkolasa@winsoft.pl> > Signed-off-by: Cong Wang <cwang@twopensource.com> > Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Applied. -- 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/syncookies.c b/net/ipv4/syncookies.c index 0431a8f..7e7401c 100644 --- a/net/ipv4/syncookies.c +++ b/net/ipv4/syncookies.c @@ -321,7 +321,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, int opt_size = sizeof(struct ip_options_rcu) + opt->optlen; ireq->opt = kmalloc(opt_size, GFP_ATOMIC); - if (ireq->opt != NULL && ip_options_echo(&ireq->opt->opt, skb)) { + if (ireq->opt != NULL && __ip_options_echo(&ireq->opt->opt, skb, opt)) { kfree(ireq->opt); ireq->opt = NULL; }