From nobody Sun Apr 28 22:43:55 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp2075041jad; Thu, 24 Feb 2022 16:53:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJz8r9NxrNO3WjIowuJmC9lNT9K54onMefqi17D2Uq/MQ0n4uKfjjvsN0rYy19/hJVTXr9Ip X-Received: by 2002:a63:f0d:0:b0:374:916e:52a4 with SMTP id e13-20020a630f0d000000b00374916e52a4mr4145705pgl.457.1645750391034; Thu, 24 Feb 2022 16:53:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645750391; cv=none; d=google.com; s=arc-20160816; b=onBSy9G0rUc3eC/bZ6ktfj1nCP3DuAc/UvnAKyULXGaq/1jVuVa+sddtR+r+NJDmQ1 68IspynMEvUDh/v+ebQJutafo1E/yWp6gGXCqBhCBHzTr/7oxlbYOgsgi35kmKU9g+H9 UVBwj+YzXfREEJ9qNk4LvxxXvX7tGI5DkjRCI09GXn6bc5EKVxI+BuxIN7liGmxjRHcv 2SEwylSnZXz1S14cBmyiAhCUHw4iIz54RY2Oozbjh7DuzyHImlCPyRlYcdyP6XaNiBIi bs1H+bRDFnHUbgvOQ1s3+qFtv2dFdVMeSQtQLtnnAPuy3y5qP4F8ezrmV+v+CBBmcBTP dx3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=wu6DEKn573QgflZCuhqFPem6qvPGzX3VdkPu+p0UnzI=; b=AgjDK41VoMkqKgoSm+rKGaBfPopszcJLTRZ6om/p7v5FHmhYbVY3hI91UTdSbDvZ3F indQt5b1vrI9tpsYs4xtlOlJpB/+I13gonwKzW3lb5iXHDDRMM7pBwLFVKOvU9L6jTo+ GjOoF20zwd2b/K4osOp+5iG7a6MeK7w8KIURTNbyyYhxhktWtDcvVOBqUkL/RyYwaOtR X6YqyqwHsgzyFoJqZqaYHj3dSHgQmMePOZ24RtzRZtOpJ14+BwFSo+TPnkpzXaIHGa5b o1UF3NDkPHsXxNwV7uCIFOVsdF7SS3YOPSPjxDl28Fww55WD7+eFi6pCHpv8abH8Vc3Z uZsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TjVI30Jp; spf=pass (google.com: domain of mptcp+bounces-4037-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4037-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id o62-20020a634141000000b00373a24e7c4dsi646463pga.69.2022.02.24.16.53.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 16:53:11 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4037-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TjVI30Jp; spf=pass (google.com: domain of mptcp+bounces-4037-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4037-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 757E53E0F69 for ; Fri, 25 Feb 2022 00:53:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7924D10F7; Fri, 25 Feb 2022 00:53:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F74410EF for ; Fri, 25 Feb 2022 00:53:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645750388; x=1677286388; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jppViAbtrq9fvgOH1K0JJZbz2wwEgWwtbwzSeFNMgyo=; b=TjVI30JpPBKSbvau4fnrb9A8vYKqMbeYsNeq4s7do1XR6GAa1sRJ6/tw pW7+2hYD4mwKe08Q0OeooIBVtQNFviJgoPO3vSX62t8dctDHmzq/4HZMl K5cEOFoZaRsBS6fESfBu959QdoN9wfoRZ+dd+DXdZrZm80JY4gH9kwg4C xLPAB8n444Bhgt2Z3jJoj8zkJ4EVJrN2bIoRwNy5p4HJMWwLFqLCrlSnh CNIlteVXE556HlHL3wsiuIoR2jOxxKBTlO2G4pc54Nx8CNyjXycDjLb7R 64zeLXRbRwpxkfwKJ09TS1h8S32vMsAuJyEV+ambRRmSVPsJ77UBfisL4 g==; X-IronPort-AV: E=McAfee;i="6200,9189,10268"; a="252117837" X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="252117837" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:05 -0800 X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="638050198" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.28.67]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:04 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, fw@strlen.de, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net 1/3] mptcp: accurate SIOCOUTQ for fallback socket Date: Thu, 24 Feb 2022 16:52:57 -0800 Message-Id: <20220225005259.318898-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> References: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Abeni The MPTCP SIOCOUTQ implementation is not very accurate in case of fallback: it only measures the data in the MPTCP-level write queue, but it does not take in account the subflow write queue utilization. In case of fallback the first can be empty, while the latter is not. The above produces sporadic self-tests issues and can foul legit user-space application. Fix the issue additionally querying the subflow in case of fallback. Fixes: 644807e3e462 ("mptcp: add SIOCINQ, OUTQ and OUTQNSD ioctls") Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/260 Reported-by: Matthieu Baerts Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/protocol.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index f60f01b14fac..12bb28c5007e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3294,6 +3294,17 @@ static int mptcp_ioctl_outq(const struct mptcp_sock = *msk, u64 v) return 0; =20 delta =3D msk->write_seq - v; + if (__mptcp_check_fallback(msk) && msk->first) { + struct tcp_sock *tp =3D tcp_sk(msk->first); + + /* the first subflow is disconnected after close - see + * __mptcp_close_ssk(). tcp_disconnect() moves the write_seq + * so ignore that status, too. + */ + if (!((1 << msk->first->sk_state) & + (TCPF_SYN_SENT | TCPF_SYN_RECV | TCPF_CLOSE))) + delta +=3D READ_ONCE(tp->write_seq) - tp->snd_una; + } if (delta > INT_MAX) delta =3D INT_MAX; =20 --=20 2.35.1 From nobody Sun Apr 28 22:43:55 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp2075063jad; Thu, 24 Feb 2022 16:53:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJxQunhbgcFREVPvkiS6y3u16aQyB+IV9Hjdx15zgZ0TeemBtc/P9s0b0AOWOJBkOgP27cld X-Received: by 2002:a17:906:8a86:b0:6ae:9c35:35c7 with SMTP id mu6-20020a1709068a8600b006ae9c3535c7mr4386861ejc.494.1645750393055; Thu, 24 Feb 2022 16:53:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645750393; cv=none; d=google.com; s=arc-20160816; b=b3UJvM5SpbT3T8texST8D7xLg8y6qqW8SVd1o6DDx4pfzswz2dj9ZnZ3kEVq9nFwHs 1xAURh6AV6nlVfMSudh1Dq/pdmzyA+HHyNU9ywLXYwOFvo+0Num+fw8/FClicqCJa5Z4 FQTQtWiIY4K5mBxuprNbwyNPkxxLyDvlB0o+U5lkvmn9Jv41TufoPjSu/ObsEcBJphLj i/WQMl3goUaZiTETR+TG80NTH2w64HqrxE0kUntZZKmmaNh6CgvffJolO4xaRmuPaXQl 0aSFzmgoJu76EZgYPUZea5qI1zfFepL5k+U7Wxx/Zgtdpy3kPpWIMAFhJVCb077faPxv obng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=K9TBKhjjv0Y5mlx9y/RyGjoKOIfbz6zfQNK8eYlzb6o=; b=kDiPPFNYeKB+mQ9wQGv/0uIWHe23NMxv+iXaMsFCuiuXznU8A3KKKpCiH8fkX81Rgo tcYXe67rH579IgJ89V2+/vKjP2LFW14qCjLWgDR9L7qSi8WEA0ErHQJWYMe98M75N6gD XmyttVCoUfmCMkxGg7Wf5rROfwlFt4DqSGErRhan6vX/JDkOcQWiiQ34lhqIHicRJRZ5 0kSXEnGokQgObQz0EMr8CFgtoAGZJic90E6Ol/YQD2SWcrFFy8ugn5AcYV1XASe3JLDw gkGRi5ymLzRH4JixQ0A3WpMPGaOaFm1dcC38fcrddejvFvm6eRo8668NBRjqFIlWo4iZ 8qiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Q3f9EfPS; spf=pass (google.com: domain of mptcp+bounces-4038-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4038-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id co21-20020a0564020c1500b004132cf9bf5bsi640401edb.448.2022.02.24.16.53.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 16:53:13 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4038-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Q3f9EfPS; spf=pass (google.com: domain of mptcp+bounces-4038-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4038-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 19DD41C0D2D for ; Fri, 25 Feb 2022 00:53:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AF49B10F8; Fri, 25 Feb 2022 00:53:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A246210F6 for ; Fri, 25 Feb 2022 00:53:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645750388; x=1677286388; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oKM2fvwOsoxNYiRY2TPnQn4Ts4UIqfnrnhTuR2TshaM=; b=Q3f9EfPSZXmeoP+GjSqLyjXJl0mgbx6K3p33fVGrhSucwUEefLRfM4PQ AD9uG8/hXL+tw71w3QXZ4AWYuvVqCfvhm2iHt9bXmAE2uimm4m+sEYAOT VvoVag4LP6L1d0iQpsC7WNQg2Bfrh2XhoYp6xaA2m8rKF8AArfiJkon+N uFGgS6AyMYpkzMBXIk5CIeadhGJltyvM/u67W8IiqudQNUeB8w+8ZLi0n cRV+TRa7ZkSvx/2lHk6531BZ+RHf7fRy4PUTxxEm50cwXrk7GTP3oNefI rSgKxOLmO04jCIA22TKxR96YIh3cr8v53Mq4sJOEFlgtoEQWaDDT9qGSC Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10268"; a="252117839" X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="252117839" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:05 -0800 X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="638050200" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.28.67]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:05 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net 2/3] selftests: mptcp: do complete cleanup at exit Date: Thu, 24 Feb 2022 16:52:58 -0800 Message-Id: <20220225005259.318898-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> References: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Abeni After commit 05be5e273c84 ("selftests: mptcp: add disconnect tests") the mptcp selftests leave behind a couple of tmp files after each run. run_tests_disconnect() misnames a few variables used to track them. Address the issue setting the appropriate global variables Fixes: 05be5e273c84 ("selftests: mptcp: add disconnect tests") Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index cb5809b89081..f0f4ab96b8f3 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -763,8 +763,8 @@ run_tests_disconnect() run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-I 3 -i $old_cin" =20 # restore previous status - cout=3D$old_cout - cout_disconnect=3D"$cout".disconnect + sin=3D$old_sin + sin_disconnect=3D"$cout".disconnect cin=3D$old_cin cin_disconnect=3D"$cin".disconnect connect_per_transfer=3D1 --=20 2.35.1 From nobody Sun Apr 28 22:43:55 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp2075066jad; Thu, 24 Feb 2022 16:53:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJzagVfSogpS3bGEJUCbo9kJyVmOluDocES207Ey3MbnKdmf9lFX4tnlUjVg7R3Z7k15q8MT X-Received: by 2002:a17:906:f248:b0:6cf:8328:af53 with SMTP id gy8-20020a170906f24800b006cf8328af53mr4293982ejb.570.1645750393672; Thu, 24 Feb 2022 16:53:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645750393; cv=none; d=google.com; s=arc-20160816; b=OAOhO85TQucJbCrP9UQr39sYOEuE91YTkSOpKLgvU5mefhO84+KgaaFZF6ZWqWNLN8 X0jDJtTYpnUQvSL/3Gwh6SHwax4xf9tpDS7Pl7u+XjqKoLrPsdCkg3yZytW2mTwrNxax oIt5A71U2WW5nBzpQVPmgXhuQixgPC6MzFoCKJKb73tI2KoiI1KO0pVENmYavDGPgBtx B9sklQtGZ+nF0YBI4s2OmDjuntAYcz3Wruoj607RUVCzweutibuF4rikg3g5lvkjP4dp qF0jniu4blmX8YGwuT9uhT6Sv282tPkLxhjMp7mAx3hXxErSZPBT2lg279jFPWiycIxp nWNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=43HARGrnmR0j2tMn0oB8DRqi5saHOsikniVuFSeOMVQ=; b=FrsVrAFhxzCFt783JhQa+kmBpe6fTpyzz7q0QMEz/ffJQnk08h+MKl1aO8MsgOu0R2 BStuNzAi37bD/P02t/PPigc/0yffyA3HIZlf3h3ziMa+am1/Th7pYvE1ibZ+Ne0j2uaU dxHGgNN7OTDBFumd96H6MA+tptMEaWUfe000tMUHb7Ck9NZrQcHCF9kClPCmTq5XOBBm j1i7DTdu+9GiNIz8wPDUeVzhAfV4SYFzkV051NJms6G6jDCAPuxu9wJddma3Kqov/seH 9k17BR16PZdAXRh/wbGtN9YhlJevtlcaQUN69UuEWim2sM5poIrVpB36YeR91ZmWVWIE 6FaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="af/Tg2yi"; spf=pass (google.com: domain of mptcp+bounces-4039-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4039-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id co21-20020a0564020c1500b004132cf9bf5bsi640401edb.448.2022.02.24.16.53.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 16:53:13 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4039-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="af/Tg2yi"; spf=pass (google.com: domain of mptcp+bounces-4039-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4039-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 2F2171C0CBA for ; Fri, 25 Feb 2022 00:53:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8E79A10F6; Fri, 25 Feb 2022 00:53:10 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81C1810EF for ; Fri, 25 Feb 2022 00:53:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645750389; x=1677286389; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fqTt+niSLwVwwDItw0GZA8ZDW7BieBIv0e/LtMJlhfQ=; b=af/Tg2yiqnR0OdsELbXTlp5zNmyTsw6JBCirjZRh4WlpucC9gRsVTsss Acd0TnOjNO5nXkg+vVbuPc8+fffFAsDwYUwzV3Rk14tjnJJxYc8rFDM3i x/9YrOtYCoU7ggVMJd5LopMpKGxcWhItspogpFdUJ+E2uUyqzaMd51yZr AbWRyKj2c8X1rrwjxca1Egud7YSA2ae4BAB3X2GUhRNTbjH6c9dNoki6q 96YBH5L/KRxAw/EBQPgmIkdmdILSTUm5/hjm0dF9h33SiJHEQNkWexD9R O7yjwxF8t4qMCraXeEOU1g8Hzh5ArGlovKL7Amd/FJVVsXW0waGz/OmMH Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10268"; a="252117843" X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="252117843" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:05 -0800 X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="638050202" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.28.67]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 16:53:05 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Paolo Abeni Subject: [PATCH net 3/3] mptcp: Correctly set DATA_FIN timeout when number of retransmits is large Date: Thu, 24 Feb 2022 16:52:59 -0800 Message-Id: <20220225005259.318898-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> References: <20220225005259.318898-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Syzkaller with UBSAN uncovered a scenario where a large number of DATA_FIN retransmits caused a shift-out-of-bounds in the DATA_FIN timeout calculation: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D UBSAN: shift-out-of-bounds in net/mptcp/protocol.c:470:29 shift exponent 32 is too large for 32-bit type 'unsigned int' CPU: 1 PID: 13059 Comm: kworker/1:0 Not tainted 5.17.0-rc2-00630-g5fbf21c90= c60 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1= .1 04/01/2014 Workqueue: events mptcp_worker Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 ubsan_epilogue+0xb/0x5a lib/ubsan.c:151 __ubsan_handle_shift_out_of_bounds.cold+0xb2/0x20e lib/ubsan.c:330 mptcp_set_datafin_timeout net/mptcp/protocol.c:470 [inline] __mptcp_retrans.cold+0x72/0x77 net/mptcp/protocol.c:2445 mptcp_worker+0x58a/0xa70 net/mptcp/protocol.c:2528 process_one_work+0x9df/0x16d0 kernel/workqueue.c:2307 worker_thread+0x95/0xe10 kernel/workqueue.c:2454 kthread+0x2f4/0x3b0 kernel/kthread.c:377 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D This change limits the maximum timeout by limiting the size of the shift, which keeps all intermediate values in-bounds. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/259 Fixes: 6477dd39e62c ("mptcp: Retransmit DATA_FIN") Acked-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/protocol.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 12bb28c5007e..1c72f25f083e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -466,9 +466,12 @@ static bool mptcp_pending_data_fin(struct sock *sk, u6= 4 *seq) static void mptcp_set_datafin_timeout(const struct sock *sk) { struct inet_connection_sock *icsk =3D inet_csk(sk); + u32 retransmits; =20 - mptcp_sk(sk)->timer_ival =3D min(TCP_RTO_MAX, - TCP_RTO_MIN << icsk->icsk_retransmits); + retransmits =3D min_t(u32, icsk->icsk_retransmits, + ilog2(TCP_RTO_MAX / TCP_RTO_MIN)); + + mptcp_sk(sk)->timer_ival =3D TCP_RTO_MIN << retransmits; } =20 static void __mptcp_set_timeout(struct sock *sk, long tout) --=20 2.35.1