From patchwork Fri Apr 1 15:04:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soheil Hassas Yeganeh X-Patchwork-Id: 604880 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 3qc4SJ0fpRz9sC4 for ; Sat, 2 Apr 2016 02:05:20 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=zXKvrp8U; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759210AbcDAPFP (ORCPT ); Fri, 1 Apr 2016 11:05:15 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:35592 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751925AbcDAPEo (ORCPT ); Fri, 1 Apr 2016 11:04:44 -0400 Received: by mail-qk0-f196.google.com with SMTP id s5so4689035qkd.2 for ; Fri, 01 Apr 2016 08:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Cp/BZ46nszRCmDjCfcIMoY/OLSV7ZrvfffVO1qd0LZA=; b=zXKvrp8U9UVYsVQgC6wARlEPTA8dbvkFzDc0REX+yX0fo3RYUp5QfgjpGPJHoIBQOF BUp/MIkjWOtvUWaIe8yi+3pjDkBUqoanNJjDr2gvA2m/tBDCPbatzX//zU6QtXGhwPiI 5QcAk1CccsZupjO4WtjD506HBgX7h1dHLlkPNyMNwmr6S/eLP4bEc82H2E3Zm2yrPxBC f9MaTRhQjAeCpYMtKaAm9w0lGyv1JFo4Ng6zDm1mo9ceUPnGF78SGhXwYPGSsN744BNu NXxcPiRIZIf/OX4XokHAGKNX/mOKxNSZEdxEUEqLoB/FtnD5Sh6mjHnqLLsX2a680RkN FofA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Cp/BZ46nszRCmDjCfcIMoY/OLSV7ZrvfffVO1qd0LZA=; b=gkoHV32MNbsyvNjyUSrFFGTdkZnlJKDcXBdVHphp15pKI8DnGC5REsRjnZn3Zm5L40 3M8iV6NBfrD9cdIxlJosXkBLoZvsppKLIn/4THHoH+zrmuj8/JBzD3UVIqRFkvkx7HK8 yEbKmvPti/qMBG5r4Qgm5gZAtZDuZbR2Xv+GD9Jw8Kb2oM0XLi68jGB5i3mluzxBnvVZ +wGOFKCUFe39U0XRktniUYzQVoA+r1K/pfrmu1eGzG1KpNm6b2e2X9C1gWJJY5OFd3mO liZDO2H8yJ2LLcmrVhMLfIyA7Xvf2pGQr+8OlbBVXatVleFILRZmksGlued08uNfF2D6 c+XQ== X-Gm-Message-State: AD7BkJJoW8dtdyGmsFsn+u9/RilYSEu+RTka1ZGrPN0dHRxb9r1hAf/MP9mGkf+PlixrtQ== X-Received: by 10.55.73.69 with SMTP id w66mr19022851qka.39.1459523083744; Fri, 01 Apr 2016 08:04:43 -0700 (PDT) Received: from soheil.nyc.corp.google.com ([100.101.230.231]) by smtp.gmail.com with ESMTPSA id d6sm6312885qkb.13.2016.04.01.08.04.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Apr 2016 08:04:43 -0700 (PDT) From: Soheil Hassas Yeganeh To: davem@davemloft.net, netdev@vger.kernel.org Cc: willemb@google.com, edumazet@google.com, ycheng@google.com, ncardwell@google.com, kafai@fb.com, Soheil Hassas Yeganeh Subject: [PATCH v2 net-next 2/8] tcp: accept SOF_TIMESTAMPING_OPT_ID for passive TFO Date: Fri, 1 Apr 2016 11:04:34 -0400 Message-Id: <1459523080-29329-3-git-send-email-soheil.kdev@gmail.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1459523080-29329-1-git-send-email-soheil.kdev@gmail.com> References: <1459523080-29329-1-git-send-email-soheil.kdev@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Soheil Hassas Yeganeh SOF_TIMESTAMPING_OPT_ID is set to get data-independent IDs to associate timestamps with send calls. For TCP connections, tp->snd_una is used as the starting point to calculate relative IDs. This socket option will fail if set before the handshake on a passive TCP fast open connection with data in SYN or SYN/ACK, since setsockopt requires the connection to be in the ESTABLISHED state. To address these, instead of limiting the option to the ESTABLISHED state, accept the SOF_TIMESTAMPING_OPT_ID option as long as the connection is not in LISTEN or CLOSE states. Signed-off-by: Soheil Hassas Yeganeh Acked-by: Willem de Bruijn Acked-by: Yuchung Cheng Acked-by: Eric Dumazet --- net/core/sock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/core/sock.c b/net/core/sock.c index 66976f8..0a64fe2 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -832,7 +832,8 @@ set_rcvbuf: !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) { if (sk->sk_protocol == IPPROTO_TCP && sk->sk_type == SOCK_STREAM) { - if (sk->sk_state != TCP_ESTABLISHED) { + if ((1 << sk->sk_state) & + (TCPF_CLOSE | TCPF_LISTEN)) { ret = -EINVAL; break; }