From patchwork Wed Mar 30 22:37:22 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: 603685 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 3qb2bs6StZz9sBm for ; Thu, 31 Mar 2016 09:38:17 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=PLzSxvp/; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755352AbcC3WiP (ORCPT ); Wed, 30 Mar 2016 18:38:15 -0400 Received: from mail-qg0-f67.google.com ([209.85.192.67]:33180 "EHLO mail-qg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754872AbcC3Whs (ORCPT ); Wed, 30 Mar 2016 18:37:48 -0400 Received: by mail-qg0-f67.google.com with SMTP id y89so6192929qge.0 for ; Wed, 30 Mar 2016 15:37:47 -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=bcCowfjxZ4bXLq++ZPzW/gSEN8hdHeFvM1EHnuYiZFI=; b=PLzSxvp/cSs8kj21pbMN7xIV19Ms6XugACg0d39GxbBLM04aZhJrNrpP+yCfESWSrU HD0dOUP04/aq9unIBV3TUvUOz415TPV5zZe2roCHwJ74ekifcM/1Dy4dlPwkUJk0izTU UXbXiAa5JYfLh4aJwwQAtC/fJHpfmeSB+Jf2w8PFsHhZVr5AguIxghsmSrLOxmEObgdE 96wHRI+uZl+oP3UVTtJPP/D5XjyjzXdeeIdrLDsu732dSOsPH5Riu/Bpx+o0DnX/XF6q wk8BZ6YRxH2hThOReNZpE0DBb8AMif2eY+Uy7C6wg7PYo8kL/9qTs0rcWe0UGt+Yk+w8 aJyQ== 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=bcCowfjxZ4bXLq++ZPzW/gSEN8hdHeFvM1EHnuYiZFI=; b=BRbK9D3VYdiEZY/+409VMkm8ohSIptuFSp37n3Y69pANh4UEAlUxkVTAsX6rwbexA1 YDA5xLBk5lF5DXKpn9NdBjh00H/iJ0TtDz2MapcixmVt413k8IrFipCp7MzuS1WZeWIo pMryiNtooMwFoRLRhbuprXQNW2TnmT9gzB/SGqWHfn0adMad3Ds+nR0GpMpL75KA2zAN AfE0CEsydg0lAHiZ7GNenTd43OHvSyOLkQGv+W6A/mR+wmYEz3ZMZiQQJwYi9VIdcOP6 6XJzLNLUW8O0Oq4cZqzzx6pzjxgt5BHGYvJBLJ0ZgDTS8NC+6Ad7Lly81Wk+BY2R36Hr CQAQ== X-Gm-Message-State: AD7BkJJOBSigCwcbb3x5DslnrVwqX1PZLV5PqqGGu2pnsMAygp8NdP8CU0ys+fYImBOjMg== X-Received: by 10.140.153.135 with SMTP id 129mr13804289qhz.38.1459377467444; Wed, 30 Mar 2016 15:37:47 -0700 (PDT) Received: from soheil.nyc.corp.google.com ([100.101.230.231]) by smtp.gmail.com with ESMTPSA id l67sm2782265qgl.47.2016.03.30.15.37.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Mar 2016 15:37:47 -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 net-next 2/8] tcp: accept SOF_TIMESTAMPING_OPT_ID for passive TFO Date: Wed, 30 Mar 2016 18:37:22 -0400 Message-Id: <1459377448-2239-3-git-send-email-soheil.kdev@gmail.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1459377448-2239-1-git-send-email-soheil.kdev@gmail.com> References: <1459377448-2239-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 --- 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; }