Message ID | 1335123947-9906-1-git-send-email-ncardwell@google.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Sun, 2012-04-22 at 15:45 -0400, Neal Cardwell wrote: > Commit f5fff5d forgot to fix TCP_MAXSEG behavior IPv6 sockets, so IPv6 > TCP server sockets that used TCP_MAXSEG would find that the advmss of > child sockets would be incorrect. This commit mirrors the advmss logic > from tcp_v4_syn_recv_sock in tcp_v6_syn_recv_sock. Eventually this > logic should probably be shared between IPv4 and IPv6, but this at > least fixes this issue. > > Signed-off-by: Neal Cardwell <ncardwell@google.com> > --- > net/ipv6/tcp_ipv6.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c > index 86cfe60..98256cf 100644 > --- a/net/ipv6/tcp_ipv6.c > +++ b/net/ipv6/tcp_ipv6.c > @@ -1383,6 +1383,10 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb, > tcp_mtup_init(newsk); > tcp_sync_mss(newsk, dst_mtu(dst)); > newtp->advmss = dst_metric_advmss(dst); > + if (tcp_sk(sk)->rx_opt.user_mss && > + tcp_sk(sk)->rx_opt.user_mss < newtp->advmss) > + newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; > + > tcp_initialize_rcv_mss(newsk); > if (tcp_rsk(req)->snt_synack) > tcp_valid_rtt_meas(newsk, Acked-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: Eric Dumazet <eric.dumazet@gmail.com> Date: Sun, 22 Apr 2012 22:14:54 +0200 > On Sun, 2012-04-22 at 15:45 -0400, Neal Cardwell wrote: >> Commit f5fff5d forgot to fix TCP_MAXSEG behavior IPv6 sockets, so IPv6 >> TCP server sockets that used TCP_MAXSEG would find that the advmss of >> child sockets would be incorrect. This commit mirrors the advmss logic >> from tcp_v4_syn_recv_sock in tcp_v6_syn_recv_sock. Eventually this >> logic should probably be shared between IPv4 and IPv6, but this at >> least fixes this issue. >> >> Signed-off-by: Neal Cardwell <ncardwell@google.com> ... > Acked-by: Eric Dumazet <edumazet@google.com> Applied and queued up for -stable, thanks. -- 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/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 86cfe60..98256cf 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1383,6 +1383,10 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb, tcp_mtup_init(newsk); tcp_sync_mss(newsk, dst_mtu(dst)); newtp->advmss = dst_metric_advmss(dst); + if (tcp_sk(sk)->rx_opt.user_mss && + tcp_sk(sk)->rx_opt.user_mss < newtp->advmss) + newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; + tcp_initialize_rcv_mss(newsk); if (tcp_rsk(req)->snt_synack) tcp_valid_rtt_meas(newsk,
Commit f5fff5d forgot to fix TCP_MAXSEG behavior IPv6 sockets, so IPv6 TCP server sockets that used TCP_MAXSEG would find that the advmss of child sockets would be incorrect. This commit mirrors the advmss logic from tcp_v4_syn_recv_sock in tcp_v6_syn_recv_sock. Eventually this logic should probably be shared between IPv4 and IPv6, but this at least fixes this issue. Signed-off-by: Neal Cardwell <ncardwell@google.com> --- net/ipv6/tcp_ipv6.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)