From patchwork Sun Apr 22 19:45:47 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neal Cardwell X-Patchwork-Id: 154301 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B70C2B6FD3 for ; Mon, 23 Apr 2012 05:46:30 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752141Ab2DVTpx (ORCPT ); Sun, 22 Apr 2012 15:45:53 -0400 Received: from mail-vx0-f202.google.com ([209.85.220.202]:47266 "EHLO mail-vx0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751643Ab2DVTpw (ORCPT ); Sun, 22 Apr 2012 15:45:52 -0400 Received: by vcbfk26 with SMTP id fk26so1269098vcb.1 for ; Sun, 22 Apr 2012 12:45:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=cVd+LlltXErsqvzJEW1joPJSaDhysIRVYJj65lxPtpk=; b=MlaDMaROHDHueOdXFSojyCH19GSvyTqThwOAlmIM/5knSCdXAKqyV0Sck0ZsGQ9VFU VU2awE2Ly9aUNr+uMQwcd2XOXvlVGGTduyTA566/yC4VZEk+b8QW0SErKOsOhRH+sapq qKNMDU8Srnh8yoo36my8T6go+lxdbLz1eANljgdxWE/uqVFwfbYoMI4NDQgk3CwrfUnn k8R8kmZfoHpI+Mmce9HpI9roMGkNoEc8Q2pRp4yPYpS3vMxvwjJe7bUFhLFyL7d9914g Fv4jTm0rkG1cngg4ZDaUZn3yf7wI+GHo0i3g9OG9PkjTQNMpAt0iToj8P2SxJZ57NdNi YGXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=cVd+LlltXErsqvzJEW1joPJSaDhysIRVYJj65lxPtpk=; b=hkfD8eZ987xokNxUz3tEJaliCDct5CtyDp5hPARQ94m7ZbqO4p0RVCYNWTq3LfJ3MZ eEVXC80OVZeoAToqPdW42wpwqscI+4UCbXUfVveLLXAxdRJpyM2PzScitZVGZ+wbwmwr Z7C/YUOyD5q+pN/i0/MsIKs/1sfUh8wZxcwwIsqfe0y/oMyqsRUX+tkwbGjcgXjcNjpA FIuc57eLWrs7dQs4v0XMacQF9c4kWiZkV82ciBERno+Y2rPyk70Q5RrR4RbMrw+5J5S5 PwrVYh+ERcN9rrjTIQpcov4O3FQ8y74EiDTiTl4pn/ZInkzb2tiMHm4uJVR4y3ZqpnkN HGAg== Received: by 10.101.7.34 with SMTP id k34mr5044103ani.15.1335123951212; Sun, 22 Apr 2012 12:45:51 -0700 (PDT) Received: by 10.101.7.34 with SMTP id k34mr5044073ani.15.1335123951029; Sun, 22 Apr 2012 12:45:51 -0700 (PDT) Received: from wpzn4.hot.corp.google.com (216-239-44-65.google.com [216.239.44.65]) by gmr-mx.google.com with ESMTPS id y36si12554109yhg.2.2012.04.22.12.45.51 (version=TLSv1/SSLv3 cipher=AES128-SHA); Sun, 22 Apr 2012 12:45:51 -0700 (PDT) Received: from coy.nyc.corp.google.com (coy.nyc.corp.google.com [172.26.62.101]) by wpzn4.hot.corp.google.com (Postfix) with ESMTP id F05111E004D; Sun, 22 Apr 2012 12:45:50 -0700 (PDT) Received: by coy.nyc.corp.google.com (Postfix, from userid 4318) id B69B71C06D5; Sun, 22 Apr 2012 15:45:50 -0400 (EDT) From: Neal Cardwell To: David Miller Cc: netdev@vger.kernel.org, Eric Dumazet , Nandita Dukkipati , Yuchung Cheng , ilpo.jarvinen@helsinki.fi, maze@google.com, Tom Herbert , Neal Cardwell Subject: [PATCH] tcp: fix TCP_MAXSEG for established IPv6 passive sockets Date: Sun, 22 Apr 2012 15:45:47 -0400 Message-Id: <1335123947-9906-1-git-send-email-ncardwell@google.com> X-Mailer: git-send-email 1.7.7.3 X-Gm-Message-State: ALoCoQmBhdoXMBBo+Pp4EYMpRsE+T5Q+kjV+SsDary7SlYVd4xD8EWUFz16jgIvm2v9cg05+1/LOtOnmUeTsD5CIDWJXb/qyxR0r4+1xLv7MXu4g/uSBOrefKKFQXQmv5yuEW01GWcbElFamKHDsAuRoUCVz2LI138OND8utBlendpmrJjx/a18= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 Acked-by: Eric Dumazet --- 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,