From patchwork Sun Apr 3 03:08:07 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: 605499 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 3qd0SH5pwYz9sD3 for ; Sun, 3 Apr 2016 13:08:31 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=omj6aD5M; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752110AbcDCDI3 (ORCPT ); Sat, 2 Apr 2016 23:08:29 -0400 Received: from mail-qg0-f68.google.com ([209.85.192.68]:35235 "EHLO mail-qg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751692AbcDCDIY (ORCPT ); Sat, 2 Apr 2016 23:08:24 -0400 Received: by mail-qg0-f68.google.com with SMTP id b32so13849697qgf.2 for ; Sat, 02 Apr 2016 20:08:24 -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=hpQJYr5JREgh2ho7uxqppTYjqND0vunZw6EFXg2xypk=; b=omj6aD5MLhWaiICsrK1EQdpr3aVLopyJfFZrX3bou94X5jKNbTJDqRLjDN51Aclklz TuYKCyo4DBQipOeqlzGvrMT30XITC0yplxwG1qGFucvoNk0HVUhrLGfx/HTu9thnoTr8 VyMttvfAMZaIZDQHq2awEpDn3yecGfo17/eJPgPkGpWrVGKpGXzfLNjy6ebgiD5kWaUi FSmnaaSnOSI95D7jybyuNGZLeMnvKVuM6lTCBdgVi98lTlHkiAmMbRfY9I5DC8NYa0N2 0LkpaFFHOhpNU31RB3gTw46aBAd3UuqGLlgSY4ZjfLQTYEydHGVlZxHR+fJYFzzPNKCb oVsw== 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=hpQJYr5JREgh2ho7uxqppTYjqND0vunZw6EFXg2xypk=; b=jBtpddTFM+SQfksdFRLPY4ODRxMAjz/gq3P6VgXZgBzrLUIFcDGk/uTmHLxaRvJZiR GR9hx/OIXRd8owte8fc+FEW4LYuznuD8YnBdeqq8AWfkVrBlUeE879recXd71zoWvUxv 6QU/OQvqDUgociJSRcKqlAdAIp73XjzcW45Kx7OERMJ2+zpHJL4S+2C4y4EdtTLsKUoe nyYI/cS32AEqy7Rh7HAl/anAxKkbvoqmjnaI04O3XrAd1ljJqMuNKAEowqfS+JBcTvQH tFq1ZsjtDoAig9F7hqPcBFa4J464ZaEqTWqaBILciwG5cDb3jzZYsW0Ob+9VD5MOJas6 ifpg== X-Gm-Message-State: AD7BkJIZjJcbX7ieBqmsdwP2MpVutNTN+fIlAV9qvg57iYPNfSOE/DjXVtrpU5KcMFndNQ== X-Received: by 10.140.157.16 with SMTP id d16mr23449012qhd.89.1459652903638; Sat, 02 Apr 2016 20:08:23 -0700 (PDT) Received: from soheil.nyc.corp.google.com ([100.101.230.231]) by smtp.gmail.com with ESMTPSA id r65sm9611121qki.17.2016.04.02.20.08.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 02 Apr 2016 20:08:23 -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 v3 net-next 2/8] tcp: accept SOF_TIMESTAMPING_OPT_ID for passive TFO Date: Sat, 2 Apr 2016 23:08:07 -0400 Message-Id: <1459652893-14207-3-git-send-email-soheil.kdev@gmail.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1459652893-14207-1-git-send-email-soheil.kdev@gmail.com> References: <1459652893-14207-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; }