Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3211368pxk; Mon, 21 Sep 2020 08:00:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzOFkTQsYNyNdb73Tq7neT0MN6TD07L705j4XajJd9vaXMkFyMMHngIDUW9zA2mIlZlmtr X-Received: by 2002:a17:906:d8bc:: with SMTP id qc28mr51469469ejb.490.1600700413121; Mon, 21 Sep 2020 08:00:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600700413; cv=none; d=google.com; s=arc-20160816; b=aPCUURW8L/XNn7yDSa3R5cDl1et9l+N10WdvqzyeqLF7NXgwRHkx9FxfiMqAhttq4B cuqVuK6+2FKZuwF0ZTzY+80anENHGC7CFElL1ZeoKtKWNhN3j7k+2iT1/A8oBIs3SW6H N1BAnU3vrt6H0FpJpCRot4ik6lf4xpqkF+8twdQcPqEVJvvc8nhUTE+TlsGd9B8bnwKg qRRZuw8aO3G2kpRnw5L8eoJapa/X+s46LxxlhQT+7I+RQpTYG4hoEkZ2mO1aaqmVDMSZ KxK78LH1Fys5CqxeuMjJo6/a82h2pjWJEw4zZ/LtvmohMOHwP2lO2E8qMHpIi4jZ3avv 92pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=EJs4t9es9brS9byQpAuBOzkQpNdm2qyviSkYBbgWl2o=; b=MR1AxOIwBppjLQQBTyOyo6tmZnYvgK6JzvfF0QNXcaz5sVCx0sCWVtU7qLOR+Jrhx0 AEdwrkzQMuhXy37DUIXAWiNk+fNh8BwHbWRO5b7YgJM9RO63fXmpzIaEOtsEncp/By5h rj3FXzEv+CaOsq/oXY3i3BxVdqHHUR22b7VtsY85ltQG5e6l0AZHISY9gpDSo+LZRJzT GMkctV/sIojFu1hw2tNfP9bxRYIeWExnRGlgzkxBENK5rvPu1H2lwUu1HPq4uuDH4A70 eWpKbwbi+Wl+yX250azO3gkApLLXb+JQlcxvz/GfnwcBVX9bqzYtLRdQhUHnl+aEXtEx ixLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20150623.gappssmtp.com header.s=20150623 header.b=hXJAM8yD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m16si8434378edv.36.2020.09.21.07.59.49; Mon, 21 Sep 2020 08:00:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20150623.gappssmtp.com header.s=20150623 header.b=hXJAM8yD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726830AbgIUO6T (ORCPT + 99 others); Mon, 21 Sep 2020 10:58:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726973AbgIUO6T (ORCPT ); Mon, 21 Sep 2020 10:58:19 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A303CC0613CF for ; Mon, 21 Sep 2020 07:58:18 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id e23so18204730eja.3 for ; Mon, 21 Sep 2020 07:58:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=EJs4t9es9brS9byQpAuBOzkQpNdm2qyviSkYBbgWl2o=; b=hXJAM8yDP7Dqi6R8iCao9nXatIh73hpixHgJlbXkNZlClzJTMS5uTw+NawbDadhq8G Q7nPwwW61JWpKIg4KB0JYv8QIeoSyHzci2g8hhtueEJXuzenqzhz9/jR5VGJ0iCNBnbT k8GZ1qB8bF5tYoDz+2dJwcnL05FNjyuqk7ppr2JRjYrmNdME9L7DLmhZpYPHFUR4F1pL /0BM3hMQXDMP3Eb/9UnN3qA2LXhBxKJKYKayXb4D4u4JeFay1xDqDrYLV3hjV7oJhiol 6AGDEIyoWV8GqwkFZSeLHfzHvo3lujgje3dRULBPFg61tX1o29cnVFj+9hxZ+g/7ZJ4/ AeYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=EJs4t9es9brS9byQpAuBOzkQpNdm2qyviSkYBbgWl2o=; b=SW4oMDbg1sO1Sjx4i2Lid3cj8hSMB4S8tbKjQhtlxfDJATqQwZG/qn/VeojXz9dAjl Wf8gcrt/fhyyXe3XzPG4FV13Ne4c2LmtClfeliu+x3gl7yRTP/TRb/I8Pn5zqYmRPjsd SrVMVoBTbUP9r7lXFKGudSceuowys0Ind/H1jddXBfkyVFb2/Gk+229VTZtnoolDpHcF hmgiAFgziWKjtl2SUlTfADBKQ7eIr1amVYO4c0lry7WnyD1cFu3+TGkNgzCO1FsjcKZ8 HZ1llj6gdoxJPtLlc/ZmZWSwapPEKF2sG2gqnywdAQ3Zqqh12HMC/nDQcwv19pKrA6V5 hfPA== X-Gm-Message-State: AOAM533p+ofujz2rYNOMlFfub01rTwgMNMAj5KJCPAEURUMyCDbNOmcA 2wPrqUBpYjZ9K7ZGPdWA8sPWGg== X-Received: by 2002:a17:906:60d3:: with SMTP id f19mr52068017ejk.141.1600700297089; Mon, 21 Sep 2020 07:58:17 -0700 (PDT) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id d13sm8746714edu.54.2020.09.21.07.58.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2020 07:58:16 -0700 (PDT) From: Matthieu Baerts To: Mat Martineau , Matthieu Baerts , "David S. Miller" , Jakub Kicinski Cc: Paolo Abeni , netdev@vger.kernel.org, mptcp@lists.01.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v3] mptcp: Wake up MPTCP worker when DATA_FIN found on a TCP FIN packet Date: Mon, 21 Sep 2020 16:57:58 +0200 Message-Id: <20200921145759.1302197-1-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mat Martineau When receiving a DATA_FIN MPTCP option on a TCP FIN packet, the DATA_FIN information would be stored but the MPTCP worker did not get scheduled. In turn, the MPTCP socket state would remain in TCP_ESTABLISHED and no blocked operations would be awakened. TCP FIN packets are seen by the MPTCP socket when moving skbs out of the subflow receive queues, so schedule the MPTCP worker when a skb with DATA_FIN but no data payload is moved from a subflow queue. Other cases (DATA_FIN on a bare TCP ACK or on a packet with data payload) are already handled. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/84 Fixes: 43b54c6ee382 ("mptcp: Use full MPTCP-level disconnect state machine") Acked-by: Paolo Abeni Signed-off-by: Mat Martineau Signed-off-by: Matthieu Baerts --- Notes: This is a resend of v1 and v2 with the same code modification. The previous versions did not get delivered to vger.kernel.org but did go to other recipients. There is a known issue with the SMTP server on the Intel side. Sorry for the multiple versions. The only modifications compared to v1 and v2 are in the commit message: - Paolo's ACK is back: it was accidentaly dropped. - My SOB is at the end, being the new sender of this patch from Mat. net/mptcp/subflow.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 34d6230df017..31316cfeb4d0 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -733,7 +733,7 @@ static enum mapping_status get_mapping_status(struct sock *ssk, if (mpext->data_fin == 1) { if (data_len == 1) { - mptcp_update_rcv_data_fin(msk, mpext->data_seq); + bool updated = mptcp_update_rcv_data_fin(msk, mpext->data_seq); pr_debug("DATA_FIN with no payload seq=%llu", mpext->data_seq); if (subflow->map_valid) { /* A DATA_FIN might arrive in a DSS @@ -744,6 +744,9 @@ static enum mapping_status get_mapping_status(struct sock *ssk, skb_ext_del(skb, SKB_EXT_MPTCP); return MAPPING_OK; } else { + if (updated && schedule_work(&msk->work)) + sock_hold((struct sock *)msk); + return MAPPING_DATA_FIN; } } else { -- 2.27.0