From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D80D718733B for ; Mon, 15 Jul 2024 10:10:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038202; cv=none; b=h+NKeCimpC9mDf6Xia9Tn8fRBYBWIryjGoeA5N4PqKHgMr8WQHUmH2iWCK/lL+7tJOBGTyDgtxm3RW8uZ3atmtV/+DAk0wt8cKuj+8kTJ7npSGno1W04KhjXwtk8pANeo+HOuopM0FH7SZU+kDZPgcxyCvG7D/0j73XkC5nJFVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038202; c=relaxed/simple; bh=lVYzLe5JrCLEvvxaysYG3kgQy2v6ncdEAEe/A6edulI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fygheu2kXTfXh8EJ7z6y9UQrvYzkpV7T1GORC9sAtN6F68EjDnQxmFJV26uAYGKdZOKiocXtAHNnmCaiYQcZFG/TN9nvdSjelLBPJjjrGoankNIiS+mNot7HQ+HUsomhKCbr1THQZA7GGcEGnrKxBaFMHdaBnIHB9nnJbZt3hrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jwLj7Uzv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jwLj7Uzv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4F94C4AF0E; Mon, 15 Jul 2024 10:10:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038202; bh=lVYzLe5JrCLEvvxaysYG3kgQy2v6ncdEAEe/A6edulI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jwLj7Uzvmb0ZgyImUbzTD9P+bsqb7PDNQ/GPf4ZjyEfwLbe/7eYbTFo9R2kJsZtEg eWwMkRf1p8p0Be0gW8IKgewGyJ3hAgbuNh+g38A9NKQcyopYqau43dmzGvQf5e5h3Z /mz3AiaPrhFqCvWfH7JZqvHyfK4DWthsdGyBPHt20jB8SKGsekJd/za8op0nf/6cy9 htqSw628hu40EoZUuzieywHJ5G8jfXf18R2ioLZprc5cDEcqM6xrmHeowpi4ppVKwY PV4GGKSG7L/mKK2wlxFiHzs75ufcnIQ/nUA/Ie3iRsywW1dqGK4/Vpv5grpa5RpZ7S ZJeDVmdKXEM9w== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:39 +0200 Subject: [PATCH mptcp-net v2 01/17] mptcp: fully established after ADD_ADDR echo on MPJ Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-1-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1655; i=matttbe@kernel.org; h=from:subject:message-id; bh=lVYzLe5JrCLEvvxaysYG3kgQy2v6ncdEAEe/A6edulI=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3nZ4ka7RAChPT4TnmKy08133IfeqSoeYP+ FFlfFi8+JSJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c7BCD/0ZKZbvS4NuA4KvrvvqsatNrAV66XkZJIHEll61LySx84jGDvJ+AYMJdINfdlB1GIkA64O dGFpw0KYjwc1OUyTz5Uep4fWSo8qhPBwFznfM3kxZfHlpx39V98P0j4Kk2LNbhJ2qH5X7QbxmEN gSPqJmfSMWIr/OGz6OFNSAg//2tG4LqHlwcweuooFJ7S55Y4krUgyQA7X7YzdA8uBMFbRZ/gpST tFRWqnDXTqvbkzypE3NTr+9hLcURNyxEv7qvCn4YZvP8IEHDGbyTk1ukEy9QhhvyPBMFOUVvTyh 3yOyimYVVKdQsKym+cvH4NAjJd6uwBTc261Ga5Y/IA+qF6h7ezrcWEeKe8gEdTPU57IevjR1yOR 2cbMWfWZIBvsDQwl7le/l85TVFM9buUo9gu8Xb6RUPLxtTbx78lmcfmf8mNnoEVojyrYHFG86P0 SQI0XNBc4BLwUU3QjEjUo61YbkK6Fo3LPKq5x/ENUGhTwiC0DuGK6ZMpPgMTeIXT8QQew/nT+nJ T81ly4Xbl3uMLczLTDdg/aFkdHp0L7zWdL4etHokq2hFUla0yDRYVkRI6wQRpGIPwDp+1tFDmb+ W6dP/7pvz56S85FURhMSiNgODl0xNQZ8mF3e/oW1xpR6DB5PQcxNd7nm0mD65FpFR1nDQOhcvKi wyY/A/Gm3HGVgnA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Before this patch, receiving an ADD_ADDR echo on the just connected MP_JOIN subflow -- initiator side, after the MP_JOIN 3WHS -- was resulting in an MP_RESET. That's because only ACKs with a DSS or ADD_ADDRs without the echo bit were allowed. Not allowing the ADD_ADDR echo after an MP_CAPABLE 3WHS makes sense, as we are not supposed to send an ADD_ADDR before because it requires to be in full established mode first. For the MP_JOIN 3WHS, that's different: the ADD_ADDR can be sent on a previous subflow, and the ADD_ADDR echo can be received on the recently created one. The other peer will already be in fully established, so it is allowed to send that. We can then relax the conditions here to accept the ADD_ADDR echo for MPJ subflows. Fixes: 67b12f792d5e ("mptcp: full fully established support after ADD_ADDR") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index c0832df3b0a3..4ee2e3605f5b 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -958,7 +958,8 @@ static bool check_fully_established(struct mptcp_sock *= msk, struct sock *ssk, =20 if (subflow->remote_key_valid && (((mp_opt->suboptions & OPTION_MPTCP_DSS) && mp_opt->use_ack) || - ((mp_opt->suboptions & OPTION_MPTCP_ADD_ADDR) && !mp_opt->echo))) { + ((mp_opt->suboptions & OPTION_MPTCP_ADD_ADDR) && + (!mp_opt->echo || subflow->mp_join)))) { /* subflows are fully established as soon as we get any * additional ack, including ADD_ADDR. */ --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 EA0FA186E42 for ; Mon, 15 Jul 2024 10:10:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038204; cv=none; b=utJjm54j2gHaZVeITROcrKKYTyMh0282ta665lCawDiJeGO0v9tmjQu0Ic5ExN5yJ5JN2L5rBv9K6PfWizB5R4uwj5KCKdSMXcfn/vVNTl2fSX+2nwC/HPCB29b4encZACn9kUvpBNqMj5psLEXQRKtsBQMfR4rPzF+Xiw6Hgo4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038204; c=relaxed/simple; bh=VTCYuWArzYhunK5hbwYMqWdj9fMJvYLpw+Ge9TGDPd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sm/qZQRooQRB0ZQ6A0QjQevS7vkCxvNQyyua24jMhNWvqR3jY5tyWNL3/5AFZo0fb0EgPPJZ1UMaJY98YzG7dFfSkUh0ewE/0q1Senrjd97Rf+I45G+ppCfMYE3nOS8RS7qPaICooagifUiAIc2txnJnkWkSSgE/owrn+zefLFA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=edbuf2m/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="edbuf2m/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0688C4AF0B; Mon, 15 Jul 2024 10:10:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038203; bh=VTCYuWArzYhunK5hbwYMqWdj9fMJvYLpw+Ge9TGDPd8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=edbuf2m/OoYURfGsUzUVhdRFdGrLCS+K2yvYYuwMYHnoLZnPqROQvPa/59JOkM4R3 jv9tO9jmTlaqFYZWOF5a+/XDKLgVNCr/l1ZlR4V5N7ZDDTHegHDfl3sDQA3kSyEfR9 vJQWuZXj9uVbcesf9HPA7/nYO9b/CFxyi+5N3pU1Y0w2a64iWGCprBHXLHNQuWDReT ljiBxv0LKcNyBjhFp5xopExBUsApaSJ3TchTrvLjB3Zh9flpicofEoTqUOt2Gg4PcR O8SKqorHPi9UbY1akSm8nS7eTyf3QO6ZyeGZAfPSmRxdfxGcMnzEVpyp50FaWg8I0I QP8ibwkUZl4xg== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:40 +0200 Subject: [PATCH mptcp-net v2 02/17] mptcp: pm: deny endp with signal + subflow + port Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-2-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1389; i=matttbe@kernel.org; h=from:subject:message-id; bh=VTCYuWArzYhunK5hbwYMqWdj9fMJvYLpw+Ge9TGDPd8=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3X/lqoq34yh7dzQznWfplPDvSxR7d49UZ6 KAFFQGovyCJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c79iEADP2y/RVSepo5pZYnVJ9yWUukd1XuLG6wNJuZXgJ+jFld5zpYaJx5CZ6joV9fGh8xNwbq7 Y1tUnC3kRnZqSYHwjDyZZ9kF+hJ3Xd/ttnLMJP6H57b2y2WSzgsj2w4rUdKiB2rdd7CSSnSMEpQ PtMQOir1eh8TtSmEROQQPFONFlHufn/MQr/mG43JLsnnCS2Nn46VEw38rYXMFG25f9S/tAsNmMQ oURbCw7Y1IPBX9nxwXqq9FW7BqcDCAlGIWHdKuKAUeh/xkr4AtioqzbVSiDZZftdKe2Cyp2U9Fw A/Sk0fP0rY5KKO3Gnc1vRe0vOmFMHze4msYsDyE3VKntZp5DDjMR1/ij1r9h1QKiYEo2IQpfZkB diPW6t0my+QhHomwcz0RK5BKXEm06awan6eS0NTLUnI8P4+SDQ9NJUxSTpQqqhsQUlaitFQp5o4 acaeZ3DFvl/aACsh8s23JYlBj2+mIw1bkU+Ukzlp4uQ/KtZxbJpm+3tUkP3l4lDp2maO9zFIYP9 kqxOFTnrdDdqZJR7omJTXCKiC0iuKW+zHmFEvmIzVEcYWtJyCQ8w369Hcad8Xx7BiwO228bSruY N69V+ZUuaD6oex9PWHKPlbassuznyC9xYEvO+enMVhQuWVSpIdDkY0g3XbL9n7HqfV23ZgC435t 3r2n1pa2f6rTafA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 As mentioned in the 'Fixes' commit, the port flag is only supported by the 'signal' flag, and not by the 'subflow' one. Then if both the 'signal' and 'subflow' flags are set, the problem is the same: the feature cannot work with the 'subflow' flag. Technically, if both the 'signal' and 'subflow' flags are set, it will be possible to create the listening socket, but not to establish a subflow using this source port. So better to explicitly deny it, not to create some confusions because the expected behaviour is not possible. Fixes: 09f12c3ab7a5 ("mptcp: allow to use port and non-signal in set_flags") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index f65831de5c1a..c44b0ae51cdf 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1311,8 +1311,8 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, st= ruct genl_info *info) if (ret < 0) return ret; =20 - if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { - GENL_SET_ERR_MSG(info, "flags must have signal when using port"); + if (addr.addr.port && !address_use_port(&addr)) { + GENL_SET_ERR_MSG(info, "flags must have signal and not subflow when usin= g port"); return -EINVAL; } =20 --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4102A186E42 for ; Mon, 15 Jul 2024 10:10:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038205; cv=none; b=hU+o5dYClV8fvgCLQyuKKaalHdbr0VAzYmOcwsYbduObunIbC2oHrin48NlDlBME/7cfQp7J3eInMDkzpx5uWPe3V8szravDiDhN1CcbMaO23Bmr+56G0NcbiTDiO0etWXplj35MFhvr5MrrNt5/fzOges8Bey1r9JPAUXKRg1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038205; c=relaxed/simple; bh=1jgdfRM0rWxjkBHjcFTDjH0KOPr1H9+0NK7hSE/rOyY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Muj9AzoniAlfjY1mXeLlCOBgMhz0AMi6+6LM/k3HraIivdArt/AzusKyvTj6poh+yX7R4HhHbbZhzRWDu+s0fhv42jU+QSu+3TVbh9gXRQX66rG/wQD48+SNQpPFFjfQo94VKkOiHC9d8T4EeyIZOfO0VcMve6GfzA8+b9dBPAo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PK9dvmMT; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PK9dvmMT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E6F5C4AF0F; Mon, 15 Jul 2024 10:10:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038205; bh=1jgdfRM0rWxjkBHjcFTDjH0KOPr1H9+0NK7hSE/rOyY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PK9dvmMTZhPBS4/CDyRystUoEYrwelxFArpXADs5DDNv3HZFvuIfHUgD1+zDyvojJ 7vFDbGSIcLYHw/004JRgqrwh5ERkkrE8mPGEhigBSNgQnxzsz9o6G9PZtHkviGsbNV lIXyYkgjpArekR4tHmLqRnXfROzDA9tWZBrSrQEOYz8An8sy3A3mVzBMtsEP7s1TLY 18M1RhXVJ4wxMkCJY+/ksy5pY763uU+nCXU+gK8x0EHVGicQyG8VZ0XyoVoDDZkCZ9 H8TNep7QBJ269cPODNpsLFOO/hmINHAYf3CJnnFLYlPlH8RZjOInRJzwkb+aSMjYdR J8YId/R/1bwaw== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:41 +0200 Subject: [PATCH mptcp-net v2 03/17] mptcp: pm: reduce indentation blocks Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-3-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1379; i=matttbe@kernel.org; h=from:subject:message-id; bh=1jgdfRM0rWxjkBHjcFTDjH0KOPr1H9+0NK7hSE/rOyY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV33veI1qy1+EaTmamhZ0PV6zWxNoQWkA67B hhOmEI5AvGJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c84nD/0XO6A/aHLYt5XUzYvJpHc1fXJNue+fuDCFY2E6ggvAmWBaGvZX+eM+KA/Rg3QOQ1nd9PK W81WTfLeMcA1pvoSSabCrJf6yHmpnOeb5sLCh+syGLpAH+UAN31QLuV6QkMnrzZbtuWGteG/9A3 QoYL2wdMP3RB4lSBQmi0Ydz2gjflvuplru/6vLhzGIBa/GjOyeDrlfE1UhPS7qq/NUFgSWyGPCU apKyKVoLxPeKJZSP/HOiGkgnrjydnMfYhBFsDu324xYpQwU9gQ+SCP2maPWweME+F2DkVv+zQjQ XIQQ8VquNWlgBeHOgClQr45yY0BfzYuHQQZ+B7qAtGPgj3Dru8PvutmIr2XPLCDOMbFbRlCDLkC xvMJqvvQdrapMzPxO81alS0sLYq1gEn1+LmS1790JdiROj7ew/DHfAAIIDoAaNTDo6LlbEntr9d GJ5l4GJhHDSIQLOz4rWr0pwPMgFZCNJwEtiHNh1bI2Bq4ZoBMwL1nRVoyIx49hekHzmw6P36CGh PlpZ1R1/pBj7h6wnVjVqfoRxboxro0e9jnpDUFtMqGNJ57mNhyJqKbDyO/q6c8ZLFIoD66beE67 A6MLT14kBIL51FAN4Y2uDwHJLX+GjC5mx6zqflL3eUm2sGhmtG1aeGr2s+XYAhpTy+wdZHHIjY4 pg4+mTS01pJcI1g== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 That will simplify the following commits. No functional changes intended. Suggested-by: Paolo Abeni Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index c44b0ae51cdf..adc0183b8d3f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -568,16 +568,19 @@ static void mptcp_pm_create_subflow_or_signal_addr(st= ruct mptcp_sock *msk) if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) return; =20 - if (local) { - if (mptcp_pm_alloc_anno_list(msk, &local->addr)) { - __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); - msk->pm.add_addr_signaled++; - mptcp_pm_announce_addr(msk, &local->addr, false); - mptcp_pm_nl_addr_send_ack(msk); - } - } + if (!local) + goto subflow; + + if (!mptcp_pm_alloc_anno_list(msk, &local->addr)) + goto subflow; + + __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); + msk->pm.add_addr_signaled++; + mptcp_pm_announce_addr(msk, &local->addr, false); + mptcp_pm_nl_addr_send_ack(msk); } =20 +subflow: /* check if should create a new subflow */ while (msk->pm.local_addr_used < local_addr_max && msk->pm.subflows < subflows_max) { --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9965118629E for ; Mon, 15 Jul 2024 10:10:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038206; cv=none; b=P4SnN4Q1Qn59zyk6XNxJ6kM9+BUne2Lx6FhO+fHuLz/Kiaoc5YFBI/xCX95XkvhM1wWscP+33MN+WzRv3/P4LbwGU0o1B2jieOBDWU6PxLKsL3vxSnSmNzmL9euIy/oYZ0g12fJgvVf8HbpuEsofi8wf6g5AY8Ji89C1SOIWZ9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038206; c=relaxed/simple; bh=3bp0+EUTF1pd58//Srb/ytyXhrPRDQI38dewIb8zZ0I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TBIXc8zFmSuZr/jQxPYtlPQDpzOlvoaPE2GClJ5LfsPDJ73QoceriSEsAbnsxig4celRYHVPMDhXpn48QVrrNmSz85hQDVRSkpdfeioZapYqJlEAdZK77dGCflou/+iiduhx1/0R1eKaa6i6y2/HfB5bZU/XnsScnrqihNtDOQw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qqff1Ggt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qqff1Ggt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3AEEC4AF0B; Mon, 15 Jul 2024 10:10:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038206; bh=3bp0+EUTF1pd58//Srb/ytyXhrPRDQI38dewIb8zZ0I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qqff1GgtLMrdISQidTYP0ZG6QMbUe5afTbc15gKyPubOpAhFOw8oANIAXCody11d/ OAsE9F8jE+Nkqcki9UgCZNo5CCpTWPllEsHNj86xq9BzQsmeBA2TOeW2KvBB1yGcte GCYZMIml2ffuOjVyqdF2foMzP6GP1+BL8k4+LPHBhEN2rhYbhcSzk4OcKj8lB5D0FL 6TCSF2WujBAfXhMILColxVutV1l8pfZ+f0Fj4dlhMkL1hLQnS+lOFSuA39BC0yeYfR gmb8dL9DpjQVTtYT5zTL72NBjARyrRnYCnqMHCOQN07TVlFVpGiONSpKeVKzCW27Nh Zjo/JbraW23Dw== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:42 +0200 Subject: [PATCH mptcp-net v2 04/17] mptcp: pm: don't try to create sf if alloc failed Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-4-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2161; i=matttbe@kernel.org; h=from:subject:message-id; bh=3bp0+EUTF1pd58//Srb/ytyXhrPRDQI38dewIb8zZ0I=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV34AtWQ4vLaFL8IG8MjTJLvQ4UjpnLxhmPr oWWdCpPsfiJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c/8sD/sG3yBAQWp2UtdxXGt1SGkqyM8z509w58jffF3N3A2ha56tDy8+YP+wlewzgkKkScw6z3u ZCjJm1OJuYqH6O6SnVcCOvjbm3SZlICoAMlXcfOQErPMapQ4VHXydmx9i+/wJd8erZQY3oocNKa HXWDz5vc5WnKRhm3E40sjseUYCiqQiymNNcP0fDEoa5YBwmd+FgouN/llSMD3o+ZfMzKVjEaStT sERsq/o1mApeGTPbitSBBwWSRL566pCs9/L16DggY3G/KZM8wzOFYucosey0/gYh+jeayKtI1U0 XaevG7MsZI6NFDhDo6RUyNmay/N5G7bYs2yBVq7Sq0in0lns7HsQSbgE7WpyYP2qYkYUmDZ13af 1WeU8jkyFITvoYKH6tvgh3BlvojmmHqU/HziXexQAh4fv2OLxByfEf+v7+iS9uow98+4ieZ0vzd 6RCVWLBK2zlZB/sTBlS4U4SkRVN5lA/0f5jBQ2pJe9VmMTpZA5kWOKZ6wQGrTiG5ZXFFrK3FmKQ J/h6HVBuGFYmoq4ml6jZXbZFDczwB3uayBJ0Qha8jl8s1vc3K0mBXoDPMKQZDsp9P75yAVDFjgH tBaNJFpUnKY4ziGkSImte8RNhQewSHlVnBkKrghbq6XXiyexx35XlAC2Zz+J1ghAI6e7Rsw3fPN vO9wsq60UTDhiPg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 It sounds better to avoid wasting cycles and / or put extreme memory pressure on the system by trying to create new subflows if it was not possible to add a new item in the announce list. While at it, a warning is now printed if the entry was already in the list as it should not happen with the in-kernel path-manager. With this PM, mptcp_pm_alloc_anno_list() should only fail in case of memory pressure. Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") Suggested-by: Paolo Abeni Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index adc0183b8d3f..0ca6b358ab51 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -348,7 +348,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); =20 if (add_entry) { - if (mptcp_pm_is_kernel(msk)) + if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk))) return false; =20 sk_reset_timer(sk, &add_entry->add_timer, @@ -556,8 +556,6 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) =20 /* check first for announce */ if (msk->pm.add_addr_signaled < add_addr_signal_max) { - local =3D select_signal_address(pernet, msk); - /* due to racing events on both ends we can reach here while * previous add address is still running: if we invoke now * mptcp_pm_announce_addr(), that will fail and the @@ -568,11 +566,15 @@ static void mptcp_pm_create_subflow_or_signal_addr(st= ruct mptcp_sock *msk) if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) return; =20 + local =3D select_signal_address(pernet, msk); if (!local) goto subflow; =20 + /* If the alloc fails, we are on memory pressure, not worth + * continuing, and trying to create subflows. + */ if (!mptcp_pm_alloc_anno_list(msk, &local->addr)) - goto subflow; + return; =20 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); msk->pm.add_addr_signaled++; --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2F10C18629E for ; Mon, 15 Jul 2024 10:10:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038208; cv=none; b=k3Co5pr92Eer2oc5eDBsl5nJt0Mmaerc2XDPNrF7q4l7c/OBi9eF2K/d6b8ilXzFwcxs5KP1pc0hKjwnYYwncxmnYCco/gCOLxSMGnUioP60Qe8js5N0lmU0Jbw3zOh5Lx+eyp+RJVIk8yYE2tGAX6IxxWVPQWv8L94wEovjbWc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038208; c=relaxed/simple; bh=i77z9tOTtHs5P1x2DEPDtVt0aXpXalQv5SfvpCPktr0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lqwL5hM2/Nh9nuEThL5KasIGhuSOPMK/0+PZR7LzR2yCj5BAiwmu63C0tD+kDDc/tQi+CITuz5mXg75X6vunwsof6Lh3wfbHbkL2/3JNrcARAYwU4l5e4c99nmvvbpFtq/+865tvQqYdcMGhEGxHsiNQh12IdAcUsTUY8HvO9xI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BbudBK4i; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BbudBK4i" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 124AAC4AF0A; Mon, 15 Jul 2024 10:10:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038207; bh=i77z9tOTtHs5P1x2DEPDtVt0aXpXalQv5SfvpCPktr0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BbudBK4idMDr5gQd8vNjh2EfFv4aMXxi0UCcQxJOYK4JUs5tNKV5BrBx1PUZVcYBT HRDS+e7GdQr68WO/BME6InPefRCP7MTIX1gatnFGNOA3VYJwEsBLjx8kOG9DwAL9BO kAEnD/lg74tlhGjRqImqNO8mLC1vXoAAXtaIF7DV7tuTL2YugJ31gnE2IW0MxOVy0F lKoxykY6LijArswVGlvvbiJZF7h1sDw8j3GdRqcYuLqTkqIdWWh7JuEzZ5h6PASmNZ p+D8rAvqIwXFb0xgKLAoZYCay9HYDWiiP5CtWGzTEJWic7NKfoliG/Ztt2bz02TzJY Xv8gQdseI5+IA== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:43 +0200 Subject: [PATCH mptcp-net v2 05/17] mptcp: pm: do not ignore 'subflow' if 'signal' flag is also set Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-5-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3907; i=matttbe@kernel.org; h=from:subject:message-id; bh=i77z9tOTtHs5P1x2DEPDtVt0aXpXalQv5SfvpCPktr0=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3zgr8+EEw4ePqcEYRNl2dascz5u2dmBIXX 142NmbjN4OJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c9QrEADhdpUmzqhhNaGsv732aZljVLMDqbcsAcjvh4Vo9ZfO6W1//c7Opq4queasf1sj+u+GkaV tEJSMgSxf1h+vnJN1ba/cUwHmrexjmf4q3PB7ye+CU9OjUL6QmLhs19ZLuEFXa72AypAfqyHDa4 WKJ2qjtoZq5v1LiyWwnzG8xthkNoq82yUMp37LIiPezcxi1TkektEVzPvWVcZEbCX1jcChdZNzY +9gcfYf4ybgc7wtM2K/0T1oEp/CnqXv92XFqVs2wZqotq4miqKPw+W5UXzNBTkJf2Jfds68Q3iB 6Bteh7yJb4mLx1ri3MveCHV3tAZrWUFPPKUksPTeO0MCqmQJuL0VAvEctB8WulgM5YQcqmXug7b 2JOyEOqH7Vo6NTKj3fIHr0mudQfqM295fVbmKo4+syH1ETkFScbnkA3V2eLCRZZ9AqOxFayDnv9 RyHJ7p5bNS8cp8RNvpFXcD2v1YLnL2UX3WUkmV10aC+r4NiMpPa8j5S9QA4ZPCD1okMAI+vdbIK VtOoa66Pvam5nKQ2TO4+XGJ/7VEYvNTp04zDXvMvkKGj+81ZJ1LTp2nQCY+4YoMnB6oxF1WfNrM Dzv/gJlXacQ/VvFl1WaPc8K2wwcQGHvuQEgoiScmrSgvKgyV6qwlpJr3WbPDA6kHmdjfLaMPNby 7VfCm/+8X1/WObg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Up to the 'Fixes' commit, having an endpoint with both the 'signal' and 'subflow' flags, resulted in the creation of a subflow and an address announcement using the address linked to this endpoint. After this commit, only the address announcement was done, ignoring the 'subflow' flag. That's because the same bitmap is used for the two flags. It is OK to keep this single bitmap, the already selected local endpoint simply have to be re-used, but not via select_local_address() not to look at the just modified bitmap. Note that it is unusual to set the two flags together: creating a new subflow using a new local address will implicitly advertise it to the other peer. So in theory, no need to advertise it explicitly as well. Maybe there are use-cases -- the subflow might not reach the other peer that way, we can ask the other peer to try initiating the new subflow without delay -- or very likely the user is confused, and put both flags "just to be sure at least the right one is set". Still, if it is allowed, the kernel should do what has been asked: using this endpoint to announce the address and to create a new subflow from it. An alternative is to forbid the use of the two flags together, but that's probably too late, there are maybe use-cases, and it was working before. This patch will avoid people complaining subflows are not created using the endpoint they added with the 'subflow' and 'signal' flag. Note that with the current patch, the subflow might not be created in some corner cases, e.g. if the 'subflows' limit was reached when sending the ADD_ADDR, but changed later on. It is probably not worth splitting id_avail_bitmap per target ('signal', 'subflow'), which will add another large field to the msk "just" to track (again) endpoints. Anyway, currently when the limits are changed, the kernel doesn't check if new subflows can be created or removed, because we would need to keep track of the received ADD_ADDR, and more. It sounds OK to assume that the limits should be properly configured before establishing new connections. Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available f= or each msk") Suggested-by: Paolo Abeni Signed-off-by: Matthieu Baerts (NGI0) --- Notes: - v2: re-use the same bitmap instead of duplicating it for each target (Paolo) --- net/mptcp/pm_netlink.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 0ca6b358ab51..2e94f2a9f2a6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -513,8 +513,8 @@ __lookup_addr(struct pm_nl_pernet *pernet, const struct= mptcp_addr_info *info) =20 static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) { + struct mptcp_pm_addr_entry *local, *signal_and_subflow =3D NULL; struct sock *sk =3D (struct sock *)msk; - struct mptcp_pm_addr_entry *local; unsigned int add_addr_signal_max; unsigned int local_addr_max; struct pm_nl_pernet *pernet; @@ -580,6 +580,9 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) msk->pm.add_addr_signaled++; mptcp_pm_announce_addr(msk, &local->addr, false); mptcp_pm_nl_addr_send_ack(msk); + + if (local->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) + signal_and_subflow =3D local; } =20 subflow: @@ -590,9 +593,14 @@ static void mptcp_pm_create_subflow_or_signal_addr(str= uct mptcp_sock *msk) bool fullmesh; int i, nr; =20 - local =3D select_local_address(pernet, msk); - if (!local) - break; + if (signal_and_subflow) { + local =3D signal_and_subflow; + signal_and_subflow =3D NULL; + } else { + local =3D select_local_address(pernet, msk); + if (!local) + break; + } =20 fullmesh =3D !!(local->flags & MPTCP_PM_ADDR_FLAG_FULLMESH); =20 --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 8CE3E18629E for ; Mon, 15 Jul 2024 10:10:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038209; cv=none; b=TgaHKOtu+TuzRaufviyhpDSg+H9RHo1dEAjrKq+QUfDRhjHHK02ZvD8UU4CqxZ4A9Ni7FxBx2fGT1hl2KIx724fgFCE2f7kEA3bmJ+aCy+/CqPZGeg5dkRT5IiJxL4j8SHsIxMl39icjlovvd/Hc94YY9UU3rFl2grLLceW2nIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038209; c=relaxed/simple; bh=NAhjnJLuFDq3Qif5cnScKlPlgz1s2euUXNeowcShoi8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kAndwRtpjCK4llhq+6YHgOLBPqv56e6vploR9rrX6YOymtdN+jkHiByfevWXhPAk4HuUClRgWMrvO3FuyvEXpPAmpAj6M4MDPw2cFnML+tjGpE2mhXOWOs910SH+trf47kH+JbAfkL/Qme63Wyz5RXXSKZMPHZmHq524p+AFa5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qt7OrSrn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qt7OrSrn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 518F9C4AF0A; Mon, 15 Jul 2024 10:10:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038209; bh=NAhjnJLuFDq3Qif5cnScKlPlgz1s2euUXNeowcShoi8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qt7OrSrntnqrU8zJzZw5GYQyIWus8OMUId3ghXHSbwkP4ByO84QX8xmyM1NSdJuBL Mz09Q3EpMFt3AemzQ43/cUL1LQRxrEcqCCeg6sroFRyEHzxdtcijqaieA72sjiyZw4 epNQfrXNR8CI4lFVzXrTIm36MXT5IgOrhk0husCaDzAbjsSB6NCkaCihSzz5iZ0p43 Hfi7OVoC7w9COXz0joXcW42+lEYany9KyzD3J/oiw/l5JK1dsAFAe+JNB5PJlei3ay hK0ifTMCa2FJxmd0MJz0s0BTUkOKj+OlTdg7drtbuGBSH3U3/R/eDHhxPfxlJA/spS 23lOojd6W/VSQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:44 +0200 Subject: [PATCH mptcp-net v2 06/17] selftests: mptcp: join: ability to invert ADD_ADDR check Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-6-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4285; i=matttbe@kernel.org; h=from:subject:message-id; bh=NAhjnJLuFDq3Qif5cnScKlPlgz1s2euUXNeowcShoi8=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3r+yXGbH637dRiYDyhtiYKRX4kvO95kTCH Nbh/27jprWJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg czgLD/wKQUdJpOoiIGOSdV9AUUC4s6SSuF+SRMHeCDudgAF6omrQonv0fZwTBGpGdl3f9Bj2AQ3 riMlcKquxTnk1ipiq1Bshs2gR8w+W65JobRC5yEaFy4kgIMdOiZA77FdDRKv6dSf52Sl5GyzvR1 8+IDD3v1ldxXQ5Ve6usvVXoty7GNnCNmeTEZgtdPZUIPYmN0Y0rNFWgsA/jnXNREv1+4bsTZY6t QFV53OXIh6nx5l1R1A2GYwYpXYMxTXrPWz7f1ggMrIyQzSN1N6X01vhCmMfzrckcGJHpaBuYKTf Nug0D8/igxDPycZsg3Y4UcZuXmJcdXQO9g28GG5DPf622vJTO0Xzc5MP6gaokpLFqWZcVpROebL mVoNtw2H3FxuAmaj5kVW173KzjdYvDACHrALkc9iLGXr56cCnKnXM2veYvyPWS3P4lxYBQHiwbd DvZAjC65g/2F95xg1Jv4LaSIq0JrJkxvYWnvPqL78o7kz4wOPy/ER5zUSmxpgZ/yGXLRAA4OkkZ T1iVi5fve5Y48Pwz4LwlrRNMcDY+YdUoSX0kn2pNYHUakeJNSpVEzXtfUFQ64/ww3prvbQojC56 Zz92qMiVVfalRUmadJ3Ju2+vjkKD3+okzWXY2FETkR1ASnhzBEIq7ZvhYi8OuCUVcchgIH5gNaB +327QVQFb7pDXvw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In the following commit, the client will initiate the ADD_ADDR, instead of the server. We need to way to verify the ADD_ADDR have been correctly sent. Note: the default expected counters for when the port number is given are never changed by the caller, no need to accept them as parameter then. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available f= or each msk") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 40 ++++++++++++++++-----= ---- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55d84a1bde15..55ccc4fdf18a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1415,18 +1415,28 @@ chk_add_nr() local add_nr=3D$1 local echo_nr=3D$2 local port_nr=3D${3:-0} - local syn_nr=3D${4:-$port_nr} - local syn_ack_nr=3D${5:-$port_nr} - local ack_nr=3D${6:-$port_nr} - local mis_syn_nr=3D${7:-0} - local mis_ack_nr=3D${8:-0} + local ns_invert=3D${4:-""} + local syn_nr=3D$port_nr + local syn_ack_nr=3D$port_nr + local ack_nr=3D$port_nr + local mis_syn_nr=3D0 + local mis_ack_nr=3D0 + local ns_tx=3D$ns1 + local ns_rx=3D$ns2 + local extra_msg=3D"" local count local timeout =20 - timeout=3D$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout) + if [[ $ns_invert =3D "invert" ]]; then + ns_tx=3D$ns2 + ns_rx=3D$ns1 + extra_msg=3D"invert" + fi + + timeout=3D$(ip netns exec ${ns_tx} sysctl -n net.mptcp.add_addr_timeout) =20 print_check "add" - count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtAddAddr") + count=3D$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtAddAddr") if [ -z "$count" ]; then print_skip # if the test configured a short timeout tolerate greater then expected @@ -1438,7 +1448,7 @@ chk_add_nr() fi =20 print_check "echo" - count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtEchoAdd") + count=3D$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtEchoAdd") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$echo_nr" ]; then @@ -1449,7 +1459,7 @@ chk_add_nr() =20 if [ $port_nr -gt 0 ]; then print_check "pt" - count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtPortAdd") + count=3D$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtPortAdd") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$port_nr" ]; then @@ -1459,7 +1469,7 @@ chk_add_nr() fi =20 print_check "syn" - count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinPortSynRx") + count=3D$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMPJoinPortSynRx") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$syn_nr" ]; then @@ -1470,7 +1480,7 @@ chk_add_nr() fi =20 print_check "synack" - count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinPortSynAckRx") + count=3D$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtMPJoinPortSynAckRx") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$syn_ack_nr" ]; then @@ -1481,7 +1491,7 @@ chk_add_nr() fi =20 print_check "ack" - count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinPortAckRx") + count=3D$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMPJoinPortAckRx") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$ack_nr" ]; then @@ -1492,7 +1502,7 @@ chk_add_nr() fi =20 print_check "syn" - count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMismatchPortSynRx") + count=3D$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMismatchPortSynRx") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$mis_syn_nr" ]; then @@ -1503,7 +1513,7 @@ chk_add_nr() fi =20 print_check "ack" - count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMismatchPortAckRx") + count=3D$(mptcp_lib_get_counter ${ns_tx} "MPTcpExtMismatchPortAckRx") if [ -z "$count" ]; then print_skip elif [ "$count" !=3D "$mis_ack_nr" ]; then @@ -1513,6 +1523,8 @@ chk_add_nr() print_ok fi fi + + print_info "$extra_msg" } =20 chk_add_tx_nr() --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D997018629E for ; Mon, 15 Jul 2024 10:10:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038210; cv=none; b=sk/ZbcdalPjkugVFqLyMUJakya2jacoW/xhg+UY4EzzrW5eQKQCxYyHQjmw8IOpYIhIHB8JeWgnZuZGvD1afVvGnLGRqiWK5GS9f5hXda5RFHW70N1MQ4/ec3FLT+RNA5TrEyMdjWTDHAmlyWNcGBQ1LBkkl1hSLwElpFjaWZiM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038210; c=relaxed/simple; bh=Uk5krQmua1YGk0ItymKu1THhzRWDba0Om0yojxoq1YA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oJCqFk08j9M/Eki5kcGnTyrUGc7TrtyduJOx4zc76oulKaMIJ3PdLBLHKIJVR/j9qWTx/DaubpjUXSPyJSq3CCNA3XrV2osDl4j94+nYZKaxee2KDOunyrPLT4HCbYWv+GEk8gWWRMpytTzOyXMDU6SkdVDJsf/eBwQOlbywFwc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eswVMMUf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eswVMMUf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1C20C32782; Mon, 15 Jul 2024 10:10:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038210; bh=Uk5krQmua1YGk0ItymKu1THhzRWDba0Om0yojxoq1YA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eswVMMUfxyueM1BgoXvFxnU5pRV5Fcbbs2NVGBLyyttTiTPK5YqMqFPT+muO4f4lZ 0d1NFYZz3daxhu2g42/qHp1zZhO4xQhHCg+qUJIplWnqYh/n+PYTN6hCCE+I9vWkFE 8EUitwYKAkaU62PjEd0K4oguq0TqThfrAPM3+JAzz0gmopgzwxfXX7c+PN1AsS3WjH x9Va46u0sH0OR9kDJTF95BSlMLh8kfVyfqtPew+c5b+WBuFMCx5M88fMLkl3j0PZ1Y p0i32Rv2DFOYkL6ix6Tk5QIN1NPui8OYkL5okzofQO2VTZPk6u5uiFmzvzw6ym1DSx yGhDGP21M1RHg== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:45 +0200 Subject: [PATCH mptcp-net v2 07/17] selftests: mptcp: join: test both signal & subflow Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-7-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2396; i=matttbe@kernel.org; h=from:subject:message-id; bh=Uk5krQmua1YGk0ItymKu1THhzRWDba0Om0yojxoq1YA=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3w9jVNk+Pu7JsNgwc3Z5KNtVyFMp/eMqCo FytUGbsUHyJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c8OOEACkvIm2wtnx9f5l78yYEhhep5CB50ATJL+977y/wwodGUC9/I4y+qCUc2RqNwmU+Eb1AgJ mI8Kn5APb+zaMxx/198zzDjWbpVnLd3c0PQ1npSLHl9QjoFcc2it0CWmogydEVyxzXioCnJMQ9N nqG0sbkgWnh9WPg0KYXtTlA+WUgnDwAX1ZoIkTCaHgzhJ5WFP0KpqYe/n7epLdZ68KBi0jM2wlt PNpLfRHOXxdIjkMioLY0HD8MyJvsBTqkRIRTsSIW6z2cT0iPAmmnJZj50i0s4Hb3pho6ypg9ahE hPLA3VpV0QeDk1I2g963YJeeHLzgyiHWTJZ/4Bv2M77t5cfZLiVzNhQ42aLhm1yZnyRy8IoVktQ oWa+N/ieY5TqMk5fyop5EXSUuuwWzTXs4pKHFphRsKQiebm9CJdf7rcWHI0smLBoBai9r+aIgKi 6ZRrsEQmDYqq2qC4KT+q26uwJHewq2AZItRzEqC2iSWP5N52Iiewd5mGNWvawsuwVDl/u9A/H+L wbo9cAOgzb4JafIXbskkLct1c2ItZWkJaMoYTFbjixRXEYnmiGa2zESRgz3yFVMFcb9nkx6QAkE u1P99NFEaYLRkMEzOpOZzB/4YqZcgx10rOvNwJYYkN6LU4C+4VHJKGQTS5bQOTznRDLC4X1w03p 2QqWwWof5yQV3jA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 It should be quite uncommon to set both the subflow and the signal flags: the initiator of the connection is typically the one creating new subflows, not the other peer, then no need to announce additional local addresses, and use it to create subflows. But some people might be confused about the flags, and set both "just to be sure at least the right one is set". To verify the previous fix, and avoid future regressions, this specific case is now validated: the client announces a new address, and initiates a new subflow from the same address. While working on this, another bug has been noticed, where the client reset the new subflow because an ADD_ADDR echo got received as the 3rd ACK: this new test also explicitly checks that no RST have been sent by the client and server. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: 86e39e04482b ("mptcp: keep track of local endpoint still available f= or each msk") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55ccc4fdf18a..d25ac561e050 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1967,6 +1967,21 @@ signal_address_tests() chk_add_nr 1 1 fi =20 + # uncommon: subflow and signal flags on the same endpoint + # or because the user wrongly picked both, but still expects the client + # to create additional subflows + if reset "subflow and signal together"; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags signal,subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 1 1 1 + chk_add_nr 1 1 0 invert # only initiated by ns2 + chk_add_nr 0 0 0 # none initiated by ns1 + chk_rst_nr 0 0 invert # no RST sent by the client + chk_rst_nr 0 0 # no RST sent by the server + fi + # accept and use add_addr with additional subflows if reset "multiple subflows and signal"; then pm_nl_set_limits $ns1 0 3 --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 3244818629E for ; Mon, 15 Jul 2024 10:10:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038212; cv=none; b=po3sAwLIBM63H3R5fgRkIDB6sO3D5piX9/tW+Cw7QO+dzJ2ljVyUQ57UtyGv5Vzl++s4Zv4LdRQmMyeedpyqVlwWKrqi+NeKhUYupOk4lKPyyr7o0+8kCmWP16CBP82FPzk1cXUuS4adChkIjdKntCM+Ew0Is06KZLIVAPUzz1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038212; c=relaxed/simple; bh=2I6vmk+jwCRqxKwCtsRxnsAvhqqiS5h3MAqfuPR50Z8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lxQT62IuRW2GTkq0/HicXHgaKKTsmLiS8ATAXoc8nzYWJs7xU/3HbZ8XMoyEzdxM3SyN5rKtV+MNhTEvzIp/KATVpIRs8KCmE353xN9MzxgW8JrOYJ870XzCP7iG/7u8Lh7D+5ZCt9RUjp+82NmgDLDHQgw34y4IzH1yc09aNME= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CQRTb/Za; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CQRTb/Za" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F3456C4AF0E; Mon, 15 Jul 2024 10:10:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038212; bh=2I6vmk+jwCRqxKwCtsRxnsAvhqqiS5h3MAqfuPR50Z8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CQRTb/ZaJQTeCVfqs5oFmViGZ3dWQWiz5V7JADWJaxyPY1wpwKWCOdnQBBgIm8ZY8 pWgSjLYZULs3g8eQzyZpOAjsdNzOKoNlLPp2meDZ//XRzgUtV120W/0hBpPjELTvEw dcwmfsP21z/Rsh9t1n/6FA/Viy6FoRb5jgjO7eqeoh+chMh9WcksJC9erxb5OlVzgR mZDOr4a5S3eXnKtj2z2zWR7u82KR0kIpHJhUTvmdV0RuepnFKU7op8Ied3blvACITQ 0+po6bARXwFMlCZbaR/yUQ9XsvNzVM9yPM3QU7c5tdIj6+Fe2ON3gteltrcky6D775 qaWstnTCu+F1Q== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:46 +0200 Subject: [PATCH mptcp-net v2 08/17] mptcp: pm: re-using ID of unused removed ADD_ADDR Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-8-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=995; i=matttbe@kernel.org; h=from:subject:message-id; bh=2I6vmk+jwCRqxKwCtsRxnsAvhqqiS5h3MAqfuPR50Z8=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3yRjgu0V5wWad5gscAV5FzJfZ58/7Gt4sv PqycZCRM/aJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c1MdD/9dmEEczwYv7ab5dhpgqZleJd82r0xPMQmMz2e7HECla78q3jQKUlBMSDszZZfViZ4kW5T f+bfmRm75UuAh1GBXx6hMgMjCk3sos27FP/6yL9CymAUnxGvBdo90WtBajaSCUlH0ukKeXXj5bn duMVZ3OdiL/tewLDRvjcYjS6KyyJbcb/AEVWkbIif88oizdpDkWnEmTZ9T7ZFXSHPpRG3MjnNs0 boyCUS0H2Vod35XKyY5xnsiM7LCiYpnNl47tAym/C6IZVNWKmp0JUYxbTYFzgg5oqSOTw504fUe IPlAgpxJe9fcugQ1eNzv8wM33zh7U+Y2G1CLyke4s15ZsSZftgsOBYZT1ESI5y6j9qqzFxmg41e REmTNa9hjkphzb0v3b+ew5yjKTPi8lJVnVe+YTRSEJ24M9vHM03eTM6F8JLwJESe4nxRTCGKVNF IP4/Jo1/1PCX2+dsrLMEaK7GlOE2VEbq2bwj4OghpE3z9jT4k713xwHuOmc0Pke3JY5O9Xe667i qA9d8PF7jpxm7oy52QbBpQ/YfVz/UvlYPuTmVX8B942nXSnJf7R+guWVBXI6ihgA5sVlIzBCiGy XsqQC7nG3shS6KwMgX4Cflhxl4bjiZQzzYcrMmvNLdUCgg6swzhrO+Kz/w3MNEDzZ+eG/1xchSc iGud0cCtgK/hMhg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 If no subflow is attached to the 'signal' endpoint that is being removed, the addr ID will not be marked as available again. Mark the linked ID as available when removing the address entry from the list to cover this case. Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 2e94f2a9f2a6..d44d318dce03 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1394,6 +1394,11 @@ static bool remove_anno_list_by_saddr(struct mptcp_s= ock *msk, =20 entry =3D mptcp_pm_del_add_timer(msk, addr, false); if (entry) { + spin_lock_bh(&msk->pm.lock); + __set_bit(entry->addr.id ? : msk->mpc_endpoint_id, + msk->pm.id_avail_bitmap); + spin_unlock_bh(&msk->pm.lock); + list_del(&entry->list); kfree(entry); return true; --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B8E2118629E for ; Mon, 15 Jul 2024 10:10:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038213; cv=none; b=XBmndx7Z/1HSCfZZHxGxNuCPGMrc8RvXSEboD6z65MuSNc5QayQc2toqVxs01Xcasrwh3iJPbSJkSQyf6YtY0mvf2b4Tc3A9/N2qyVgP945xcQb0Sfbdpz720/WTUDiqQ6YKysvqHN810Fo7WqvOSc/B/04wADoHFIxeUUwwvsE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038213; c=relaxed/simple; bh=IZLmMEPKaTI0ecetyxX+ZJUmzHaA8vdoxLN3U+l3uKA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hLE0y7qh01vaya3fvePb6IHDXObHyANIk5pEj/ArZL3eRNpsk0jSfDoQZ5rKAv4H+gtr2khV2L8ypk1P3EQMGn67yabmODt0/h60K/X4v+nq6XAMF5k5df53PZ9XuKyOlDMg8KuBVTBLUyVXXBM0/Bf40+hR8cHugBw89gdYW5A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LYgnCLHk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LYgnCLHk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8293DC4AF0B; Mon, 15 Jul 2024 10:10:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038213; bh=IZLmMEPKaTI0ecetyxX+ZJUmzHaA8vdoxLN3U+l3uKA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LYgnCLHkC3g6oWhSduC3UBv9CDDBCXd6d1EPYB9EF/4JtsxfuZ7MrYQuaQENLOilB z48h9+j5tj/duETNCkeEUGObb3SbaEqLU5vaVA20ZcUye5cyxnjGT+gCls/I8GB0rW SUskY4rOD2jlsnOaotVSYMmh+M75zLaU4McNxjfcdNPCt9h7L4p2K18pON+2qfmNVt ANECHMspgpV67xud65qss4fPoMT1CswtT1w8vFxT35vn36yf7N26+eigiOxiwxo2Rv 3F6uuuiGB2Kwc7heItCivUaV+8YAvoW5HZ/pK1FYoIXZHtSGqHCjAW74jbhBa/VACM 9tJHV5fUzO4gw== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:47 +0200 Subject: [PATCH mptcp-net v2 09/17] selftests: mptcp: join: check re-using ID of unused ADD_ADDR Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-9-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2591; i=matttbe@kernel.org; h=from:subject:message-id; bh=IZLmMEPKaTI0ecetyxX+ZJUmzHaA8vdoxLN3U+l3uKA=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3Dzgx+mAyPSFhH/O3Xvt8e2+J84oy6fohn k+dEJfQaj2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c85KEAClgt1k/UPUT09zPZyLy6FnVPmzEAW3WchKapITG740W/MFAu8Zs0nQ6YtBlL4yBzg6WMn MJEz2MnoblbwPeKib1J1cVaifk8dUJ/cR7PJ6gMBuSOBwUCWteRhyFQf1OgZhQp9UMn6cuqL7tp fYdzuwv1QBo8YaGrPbaIsDxSEn4T0tP3C1UKIfjzWifZwi/KmKqqBurSTfRo5OrryLlo3apKDyO 0LJfrpWN+fc7tAcK9OCniT+NxOOoL/q5oiK8qUzEqA1ve3P7Oh7BybirAwX7lyx9mBddaonTP+R Dok5XNaZ+6Vol7xALjyTsbPq/83xh/e17/EJpcO/B3CLHtkpGeHxaF9v5XOvCDGkBVs/7BdeWy/ 6KMHjQz3w390LsLQmbPlA58YbXJPW0p3yBwiCABea5k4My19cDWQHLM6OJntvKlgQ2cxqXKizQZ +vkp9MN/6loPZ1Hr/s5Bx9HSj60VU2uMRseDi5RVOZ4Hy8Zi+5E4GF2i2NraNA7nMB6gwcq9aYF anINCbKBmOR40SV/1GHioMEVZpm8sR5OeRbtPBJnr6h0M+vAgAauRX9al4TfPEhsxyMfcc4K1KA 6JpMdMaYkcQ1+7ZrdkLpUw0T1ySXTXvaWuZMOzA6xOtMQLdduWbuidZuLvuL+pU/DVBRgxB4Jej 6U9fSe6rOecaR6A== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This test extends "delete re-add signal" to validate the previous commit. An extra address is announced by the server, but this address cannot be used by the client. The result is that no subflow will be established to this address. Later, the server will delete this extra endpoint, and set a new one, with a valid address, but re-using the same ID. Before the previous commit, the server would not have been able to announce this new address. While at it, extra checks have been added to validate the expected numbers of MPJ, ADD_ADDR and RM_ADDR. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index d25ac561e050..b4dc5f2772dc 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3557,9 +3557,11 @@ endpoint_tests() # remove and re-add if reset "delete re-add signal" && mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 id 1 flags signal + # broadcast IP: no packet for this address will be received on ns1 + pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal test_linkfail=3D4 speed=3D20 \ run_tests $ns1 $ns2 10.0.1.1 & local tests_pid=3D$! @@ -3571,15 +3573,21 @@ endpoint_tests() chk_mptcp_info subflows 1 subflows 1 =20 pm_nl_del_endpoint $ns1 1 10.0.2.1 + pm_nl_del_endpoint $ns1 2 224.0.0.1 sleep 0.5 chk_subflow_nr "after delete" 1 chk_mptcp_info subflows 0 subflows 0 =20 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns1 10.0.2.1 id 1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal wait_mpj $ns2 - chk_subflow_nr "after re-add" 2 - chk_mptcp_info subflows 1 subflows 1 + chk_subflow_nr "after re-add" 3 + chk_mptcp_info subflows 2 subflows 2 mptcp_lib_kill_wait $tests_pid + + chk_join_nr 3 3 3 + chk_add_nr 4 4 + chk_rm_nr 2 1 invert fi =20 } --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 BFD6318629E for ; Mon, 15 Jul 2024 10:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038214; cv=none; b=p+mqphIlsXgGMJI9zdRymSRWjw9C8Y8hrE4zoyjzqRMYDUCV3pEqWEUQmgAlSJI3GAHRktWvaRLHxgO/njatW83ogAHlTHbsUGJYKT0TlfEm2vhCsD6Uq0dSh9Ca/FuojWnNWhNZcviIKVJdnusN0QYC83MZrlnfTv6DBo+XY7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038214; c=relaxed/simple; bh=ElgKYJt0UtvBm0a4eHyxHwFDrKgdp9FKPDcdsaod4Ko=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sf93xCRZCopUNX6cSRfFXgmoWqZ3WMH2tRfDanEb6xCzkSWF8j/0l9Rpc6MBi0I5RyeSh0OQzbIBVNwkVDGXimp4BTtNUJp7y14nPC0VFwdHs5yjeoXiNvMFc+pBLwUgHld88UdZ992vrrHkAb5KTy7u/MMzQqMNMYZ15Ob1aoY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Nfd4LH4S; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Nfd4LH4S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BAB2FC4AF0F; Mon, 15 Jul 2024 10:10:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038214; bh=ElgKYJt0UtvBm0a4eHyxHwFDrKgdp9FKPDcdsaod4Ko=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Nfd4LH4Sb4INE3S0wFZbLEMr2AcLLhusZEgXKFtvPyqA3TDL4NT2Jb0TYRQ3UYI41 hKma7ngEY5rAbWHVqa2Oh37g3HusTD2+hMbpxL3ir5mGf8lBBMaQenAhY8Jger+iLs dDw79rDbAD2LbBrQ1Ijz3hMqePooUpzEOBQS6XvP3L773H+sviHOoiNyUZxJD8PJ9g bnCpnFROjmyKNXbJb+JXteHEi1deliyYpi0XyFVKJXeWz2gpeK1/AR2+7X0eJk63SJ jAheIFf/1kDqjJz9C/Mv0xUVDO5taH0ZuVI8VjYp9JhquMqnj9HDDMLYEtlCOsvFSY bIjHFsOzLAqmQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:48 +0200 Subject: [PATCH mptcp-net v2 10/17] mptcp: pm: re-using ID of unused removed subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-10-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1513; i=matttbe@kernel.org; h=from:subject:message-id; bh=ElgKYJt0UtvBm0a4eHyxHwFDrKgdp9FKPDcdsaod4Ko=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3CYGFc7bOBnl6Ty298eGGOCeQzLB6SBgU4 QVieiPhjRqJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c+BlD/9Ham8jqMPCLVFARwH+g0zF+W5dzm4XVEU4DpK+9b39upMxWtL6O11ufb+tXIt3JqXYmiy GsycdO5qnG4Rbhbc7I8kS14Pyeg4KomRvfB7ul1QkmiNcj1aGEC0UyayzPsyDzvBWIDz+jtcIjn uCGRu4OKoc5WTIDn5xv032+2r5PLyL4RMyMF/Yjvat4ntmKK5xTrCx6J0FMJsGOMM4EvddJqmeb uTtbppIRlHDeHIOomkpLtDzckeISE3FWWt76WekhGrt70ORirME7rVxt1uM74dvy2grsQe/afeH xxDKaIUiMEWCWYc/QNFQJIICNPotEXgnCoXkAmSkNYUmgdDvR3F860JjqFm1L2lMYtgXfvwm6Rm eBG04uWI1CGtOUnqwfoi440hcgcLxLyNJOnT4EI/pITom+puXQ/GzmvdPhN7dBrqIlmiMuJ3jTb 9vQhpuuzhi4tpwg1+Ge49r5dPX/WgHv8cjhmd4jyxfULAamelxqFbjIitQilD4nypdfwgYd64Eh 67ivs3+d+JxaFSrcljn9lAwiW4PY0+KkFkmo1wC20r4YS84wAlOequ2QiNqUulOgnorKno26cKZ nDQiQ/ZLKawm4qYvwmloh61ARR6aAElSlExsnVpvz4GoQmPKB1Sdj+H1K97d89M5CBIP/1N0en/ VKcmYgoKkhsGywA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 If no subflow is attached to the 'subflow' endpoint that is being removed, the addr ID will not be marked as available again. Mark the linked ID as available when removing the 'subflow' endpoint if no subflow is attached to it. While at it, the local_addr_used counter is decremented if the ID was marked as being used to reflect the reality, but also to allow adding new endpoints after that. Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d44d318dce03..36a1bda25d2e 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1454,8 +1454,16 @@ static int mptcp_nl_remove_subflow_and_signal_addr(s= truct net *net, remove_subflow =3D lookup_subflow_by_saddr(&msk->conn_list, addr); mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); - if (remove_subflow) + if (remove_subflow) { mptcp_pm_remove_subflow(msk, &list); + } else if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { + /* If the subflow has been used, but now closed */ + spin_lock_bh(&msk->pm.lock); + if (!__test_and_set_bit(entry->addr.id, msk->pm.id_avail_bitmap)) + msk->pm.local_addr_used--; + spin_unlock_bh(&msk->pm.lock); + } + release_sock(sk); =20 next: --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 79B3118629E for ; Mon, 15 Jul 2024 10:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038216; cv=none; b=tTox+FsAsrnwqUNeIEDS9uzrnCkDAmIIEtWO4rRNs//k9uyYGuaOhHgABQOA43Xt4pUyj4gU/iVkbZX9mgTpM92vt0tNtjuR/2K/UBM561Q7oxZRbfLfMlRcbDEcTNKLZgrMZxEzILOzpyx6X8LjvYkevzPCUomkqPFVYYYghTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038216; c=relaxed/simple; bh=u8qIDXTTzowhUR4HkW0eiXruuNaZM+rGz61FM/Q9y9Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t9qYnQg7N/cVcYNqz7A/K5x6/TijeW5NvYAErBgaO8WV7Zg8Onjfu3QfPgZS3ZCGdPW8tD9ldxz0aUb9hjZUUmgHlhYMo0r+TlhR/xMU1gNNTxWdxrs3ORPOqNw8ZVAs/BGum36EoiHSVXyhzFYkTr0/dTNB6UPnvxrxaYCL438= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Uw63ZEM4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Uw63ZEM4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2EDD9C4AF0B; Mon, 15 Jul 2024 10:10:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038216; bh=u8qIDXTTzowhUR4HkW0eiXruuNaZM+rGz61FM/Q9y9Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Uw63ZEM4D3fMG/uQFc80JNSwVCYnPCLMiZ1Vdve/IWWq5wEv3k32qEINx7EVC0Q/7 AJ0R+yCmpZ1w80FMllYW5nXGkObXAB4HZhguev3dCP9kgYVmL18D2DPOBIkHdQGHy8 Z9sfp97Np6caIRBnx4xJ5qOo5/YV7ZZkQhn+n1NAUuw+M9Qepnv2XhrptnjPGq1YQn UvP93UocPf2okGtXnrtohMTHdl0DXYiI4CS+fhwxEso0l8nxVDNecB21kXBg+3IrtR n4n0BFa4/hG/ybAvYf4AQb/ShLFeELa0rGPzlJ8B9SFV0NgCzHHJAsakrOTHh8+akh t/xhEhUO2AWAQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:49 +0200 Subject: [PATCH mptcp-net v2 11/17] selftests: mptcp: join: check re-using ID of closed subflow Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-11-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2972; i=matttbe@kernel.org; h=from:subject:message-id; bh=u8qIDXTTzowhUR4HkW0eiXruuNaZM+rGz61FM/Q9y9Y=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3ebkYUEph3OCgfsVBzjO+IcfyouqvUU3KT 0YCbp18jP2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg cwgGD/4qRvZNjgtrWRhdes4uBAzfE5op/nq3Kjx2spNJESRCCF9FgzIdb0uxD9Tlvx7Fxz4rs9/ HQOlAI+YWoYVmV8ptHg1SJbLLVe3DIJK7qtaF2md18Ij2/rRxlwDAG/VKdIAb8WocJgSOQWE8aB PyP7uNGOy8DGA2u9s/D0CPkgcPpNPg3vcHz6mxCJLQ920TwebRpNXu00bK2MGbz83pdhvWpxi/T EEdJ/niAZaYXhhqTCSn132WVgqlKELraAszLZMHCUGw8oliZN+Pw7xusy33oB6aD1vw6a/As0EJ 0WDPyulKjK8oAgf4PArUbOcitCzTZW2LfBO2KbdPQen5DPXMPE6XbI6WsI9D8TPIKBchoS8qrT8 AljnpWzdcISvQgobqv//0xQRf0+YHw2+bQH1XO53U1gW5wOJtHmR9LPkNACdB2ei5LZenIuh+Xp GC7dxnPlh8wNOBAMqzrMpZZkN5qcB8J1NhSCPHqnBDPWmf0NZt8gpxwoFwC3hSNeluki4wlVIfO 62ahe1cbvpn8pCkANsDqsWIxvy3zT9S3yqWilubK5d+2lwhk/dnhOyIBEDVnsKUkHNOnJNG1Pfn cszDpcjQ/XU6EG4OobM1MacdOE9Cld5wD1g1EzLR232C5+zUAHZl4F8urAOxdGDmId49ZVTjt8G JeFdXOn4xZbx9Fw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This test extends "delete and re-add" to validate the previous commit. A new 'subflow' endpoint is added, but the subflow request will be rejected. The result is that no subflow will be established from this address. Later, the endpoint is removed and re-added after having cleared the firewall rule. Before the previous commit, the client would not have been able to create this new subflow. While at it, extra checks have been added to validate the expected numbers of MPJ and RM_ADDR. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 27 ++++++++++++++++++++-= ---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index b4dc5f2772dc..c5aa745a36f5 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -436,9 +436,10 @@ reset_with_tcp_filter() local ns=3D"${!1}" local src=3D"${2}" local target=3D"${3}" + local chain=3D"${4:-INPUT}" =20 if ! ip netns exec "${ns}" ${iptables} \ - -A INPUT \ + -A "${chain}" \ -s "${src}" \ -p tcp \ -j "${target}"; then @@ -3527,10 +3528,10 @@ endpoint_tests() mptcp_lib_kill_wait $tests_pid fi =20 - if reset "delete and re-add" && + if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT && mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow test_linkfail=3D4 speed=3D20 \ run_tests $ns1 $ns2 10.0.1.1 & @@ -3547,11 +3548,27 @@ endpoint_tests() chk_subflow_nr "after delete" 1 chk_mptcp_info subflows 0 subflows 0 =20 - pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow wait_mpj $ns2 chk_subflow_nr "after re-add" 2 chk_mptcp_info subflows 1 subflows 1 + + pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow + wait_attempt_fail $ns2 + chk_subflow_nr "after new reject" 2 + chk_mptcp_info subflows 1 subflows 1 + + ip netns exec "${ns2}" ${iptables} -D OUTPUT -s "10.0.3.2" -p tcp -j REJ= ECT + pm_nl_del_endpoint $ns2 3 10.0.3.2 + pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow + wait_mpj $ns2 + chk_subflow_nr "after no reject" 3 + chk_mptcp_info subflows 2 subflows 2 + mptcp_lib_kill_wait $tests_pid + + chk_join_nr 3 3 3 + chk_rm_nr 1 1 fi =20 # remove and re-add --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 6733618629E for ; Mon, 15 Jul 2024 10:10:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038217; cv=none; b=sgI8+DSJrV3Ahb3rNpuTQ2BQt62VCNGTxXurR0k/Ss0YZ0DLCAjZqzCW0s2HSGSo2k9sBOEkWtKKkRrG9aIyhq76XjnboILmZArHGJ3Q8dZt6nKokzDI/uB2h85+IYVJDOne6Uu9NSHItTc2XhI5iJrVK3VqJGtp3N01dkLvTgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038217; c=relaxed/simple; bh=7eBKreaPM9QQMsiz0VgOKGNDPKZOdgjkPhlALqaRZ0Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SfkdNHS873siN2mRJyxFiqaccZwD8znjyo0gS3S7Tbn3HjH6UmCZAVjJhS3ddyJTFtflsb77jEvYB+BPalT8gDnh5CYlXrsA9WJsLu3m3NLmQyMNeJIsPOrzk+BkheiyK/D8jt2Pr2VJO3DSRMNu6vsGjQbStQR6Fky0tMhhhOI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HiM3+j6D; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HiM3+j6D" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 80613C4AF0A; Mon, 15 Jul 2024 10:10:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038217; bh=7eBKreaPM9QQMsiz0VgOKGNDPKZOdgjkPhlALqaRZ0Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HiM3+j6D8cSeJMptbClBZVO3EAm0jJyD0+hRlH7w4i+dyrdaUrAeYHZ+z0zcKG0SS /+Qbwrf4a8EKG1N1seLoX3VkAWGUeFeSaO8PXfC35BNDnAEgQiUh9t5acX1DFppsYa B3cUf4fB0rPUY7nNFsHQ+nFlSvybGCiGa44bdOoKG+myU/oGjFrKTkpiLDTpiZvTxl 6naNtAvD5/YKXiWZRS1cpJZ+KO0AStOiOeH9KgWaskYU/7tJwAx0vAaWLPzSMZo5sw 8vQwN4BPY1fVqCt/fB0EtuKp+QVqsPNX0mNzwaTtJVGfljvPfSD6YbUwP7JsE1u0Mz rcuYLtvtulcpQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:50 +0200 Subject: [PATCH mptcp-net v2 12/17] mptcp: pm: re-using ID of unused flushed subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-12-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2788; i=matttbe@kernel.org; h=from:subject:message-id; bh=7eBKreaPM9QQMsiz0VgOKGNDPKZOdgjkPhlALqaRZ0Q=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3gIAp7R02nGFXW0tSB9gcMJLVoZBrs/ygw gvNAXcahP6JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c1eGEACj5w/mJ6yEH1ROVAuJ+sbbRaZgs+2HkOoj9jpyLEpT24r7I4i0iQrnNWpO8K2+CRtt1of Np7SdKm0K+kUdNkkyyWiv7hxl/Mu8XooxFD2R9Ace0wZZAkL8AVytxgZQMSuShbFiVUa1tQnd3/ bf3ga/O+o4tIU9nb4GIYG33GNudzjAc54rggPx7moepinK0+eJoWHpWOjO2x8iN8BbyPD+RMIry Y2wfaJZCMUW0jBOMaeFtx/Ex/2ImK6ArnCGdcgAlhXNlsEcqdhZeszJmvBzmIOycHO+hq+irY1g 64RzMBpkAYjck7tXMJWR3rq9/ShdKGppLS7BGBSNiBb0tXLNtCmcAgv8Nkboc/d67sbDTZF1wK1 VEPSqKF+4eDnJ9L86CVpu67rsPnCOHXfnsjcy/OvbsheWgtg47/TnTNz+B83Zvuva4zLexpLmss K4xTbgcEWBOlFqyDKcilRFLESZEah9M74FWajBumlW4qqOjQBGEaBAwsCJoT5otM8ymSN8sy6n8 HZEhT6es0DMnOJc4xMd+S0vMu/7eobSrsS4s1Oh/ofoSjel692bzWLVa56EVKw6kzY58T1JSryp QMS1RyjC55HJlXIy7AhaEGkPRlK/OIgT3xG3JPWqXs/DicjiudALrDoRBY/Lhi/O8PopzYxWCFc W7uXDFzv3egXEQg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 If no subflows are attached to the 'subflow' endpoints that are being flushed, the corresponding addr IDs will not be marked as available again. Mark all ID as being available when flushing all the 'subflow' endpoints, and reset local_addr_used counter to cover these cases. While at it, renamed the helpers linked to the flushing operations to make it clear that the intention is to flush all created subflows, and remove all announced addresses, not just a "random" selection. Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 36a1bda25d2e..44092246259c 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1585,8 +1585,8 @@ void mptcp_pm_remove_addrs(struct mptcp_sock *msk, st= ruct list_head *rm_list) } } =20 -static void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk, - struct list_head *rm_list) +static void mptcp_pm_flush_addrs_and_subflows(struct mptcp_sock *msk, + struct list_head *rm_list) { struct mptcp_rm_list alist =3D { .nr =3D 0 }, slist =3D { .nr =3D 0 }; struct mptcp_pm_addr_entry *entry; @@ -1607,12 +1607,19 @@ static void mptcp_pm_remove_addrs_and_subflows(stru= ct mptcp_sock *msk, mptcp_pm_remove_addr(msk, &alist); spin_unlock_bh(&msk->pm.lock); } + if (slist.nr) mptcp_pm_remove_subflow(msk, &slist); + + /* Reset counters: maybe some subflows have been removed before */ + spin_lock_bh(&msk->pm.lock); + bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); + msk->pm.local_addr_used =3D 0; + spin_unlock_bh(&msk->pm.lock); } =20 -static void mptcp_nl_remove_addrs_list(struct net *net, - struct list_head *rm_list) +static void mptcp_nl_flush_addrs_list(struct net *net, + struct list_head *rm_list) { long s_slot =3D 0, s_num =3D 0; struct mptcp_sock *msk; @@ -1625,7 +1632,7 @@ static void mptcp_nl_remove_addrs_list(struct net *ne= t, =20 if (!mptcp_pm_is_userspace(msk)) { lock_sock(sk); - mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + mptcp_pm_flush_addrs_and_subflows(msk, rm_list); release_sock(sk); } =20 @@ -1666,7 +1673,7 @@ int mptcp_pm_nl_flush_addrs_doit(struct sk_buff *skb,= struct genl_info *info) pernet->next_id =3D 1; bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); spin_unlock_bh(&pernet->lock); - mptcp_nl_remove_addrs_list(sock_net(skb->sk), &free_list); + mptcp_nl_flush_addrs_list(sock_net(skb->sk), &free_list); synchronize_rcu(); __flush_addrs(&free_list); return 0; --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A2B1A18629E for ; Mon, 15 Jul 2024 10:10:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038218; cv=none; b=W8SUol6nmismWH3oxkdCrW445tgy8rNjpvzZrWMJH1Qf+6V6l54cxjLttfNZ4he4aiug0fHkZah57J1ciXmtwvWMXCAySLsRTZqR5tS28+pWsRpFyBlgiIU4X/M6Vatj8PPtZ7DuwknLcKn37TD94uGoS84Xyz5KvVAWU2rgE88= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038218; c=relaxed/simple; bh=XkczOedmWFgLcnHwG5YodN3uumTEtKKu+YQSdFypLd4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YMIMmunvzlFfZNPQuZnzLrXKEKAHm4tqF56g0gUbUPeYiMmX7M4485TrtGU5kMlPbBTMfpcmhf3ph5ej7SCcaaLC+3G66vZfp1V3YXYnKYhNAx/mjJRD3WuWIDuvSaH2ysVXoMqdcG4fOLS1bLlqjhWDUpgSoJDitei7syRnjHg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gz0OAtyu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gz0OAtyu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B793AC32782; Mon, 15 Jul 2024 10:10:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038218; bh=XkczOedmWFgLcnHwG5YodN3uumTEtKKu+YQSdFypLd4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Gz0OAtyuQWHYlJ2HeXG2M1NVNBNnI72IhmIV1IICkDlvihojYJJbviaQO2TQGYuEk 3QHLFldTRG5SBmP3InoZHPjADLlix20Rb512FWbnWBAH7yWzz5TqwCpqBzn3ucbEDQ 0EldMLTw1ociCEuEofnsaudwDsoAGu88HtB0OxphXu8dDM4yQvXmaVDKqSDEI5HzCy 4zniMDYfkVv1MtRqVa62rn3orgE3QkhkPJ7f2+WV7XprHJXHCEAoVZIPLBB4s3S0ke Zh6i6OxrvjQAwwHLiCZsZbuXzg89SCiM0Dd3GbKvU1lO/AW0MGPhwAYRxl3bvVZ+X4 qJkPhhTdw/y1w== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:51 +0200 Subject: [PATCH mptcp-net v2 13/17] selftests: mptcp: join: test for flush/re-add endpoints Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-13-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2174; i=matttbe@kernel.org; h=from:subject:message-id; bh=XkczOedmWFgLcnHwG5YodN3uumTEtKKu+YQSdFypLd4=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3x000Xp/L5fV02vhR1bitCmjmqTb1DZ9Sf YcyaEd41CyJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg cxD4D/0UFYz/WHkW+G4xWsnlhej9qcyVARau+Q3syItadGawhwXmpJqVNm0Tf57KRmmA3s7PN8i dkp3AxtzigrYcbM2o3Sk0a4EktPFe+uNjso/5IRySkug0YrLd85vzQ+0CUQqP5vZpfFknl/nU7m XXDvVrSdf+ah51akPXhNZe+hMsCQ9XhydrF59lUW8o7Fjq52nlpGq87XPps/41ZuVvZLvb46lLB 7pgsGEEOlmC9C9Xw7jYhic7qAIpnp3HjBKaYfVR03zTYmDIxuLbIvuT4WVNtSQRFMsFdhKTf2Rn GV6NSH1ZssguDNndh96J1Iu2xuMc7drfeDEwgDXYuc8jpD43/lCjS5Gpgair1AC86L/CWi1osLh Cws/8zkTBqkndwUbDd8RZpL11asUuhkIBICA50FX1OsLMc9+OOC6hr/AXpnSoQOEpj44icv/7su ZC6/9TSyuZeYKXTvCNvZBm+4xxe0ITPH+9WOhFR/1fl1aRZGeX182Xedk5FeNem3eUKue5vqCyX x+vSnHmflKwni10ax8hf+c5Tpr47ayd4zYpbqZpCIVrQIqb4uu9jea1fgqYAEweXOpHTzkchfkl t3WmqTt5QZOpJCwWR9y/X+UXWdiY8SxlQQzObC4egbGPRLoys1Xl2SioU6w8xUhbTR9XQY76FHW g613qUL3dBGKfqg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 After having flushed endpoints that didn't cause the creation of new subflows, it is important to check endpoints can be re-created, re-using previously used IDs. Before the previous commit, the client would not have been able to re-create the subflow that was previously rejected. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++++++++++++++= ++++ 1 file changed, 30 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index c5aa745a36f5..3565d8b48125 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3607,6 +3607,36 @@ endpoint_tests() chk_rm_nr 2 1 invert fi =20 + # flush and re-add + if reset_with_tcp_filter "flush re-add" ns2 10.0.3.2 REJECT OUTPUT && + mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 2 + # broadcast IP: no packet for this address will be received on ns1 + pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal + pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow + test_linkfail=3D4 speed=3D20 \ + run_tests $ns1 $ns2 10.0.1.1 & + local tests_pid=3D$! + + wait_attempt_fail $ns2 + chk_subflow_nr "before flush" 1 + chk_mptcp_info subflows 0 subflows 0 + + pm_nl_flush_endpoint $ns2 + pm_nl_flush_endpoint $ns1 + wait_rm_addr $ns2 0 + ip netns exec "${ns2}" ${iptables} -D OUTPUT -s "10.0.3.2" -p tcp -j REJ= ECT + pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow + wait_mpj $ns2 + pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal + wait_mpj $ns2 + mptcp_lib_kill_wait $tests_pid + + chk_join_nr 2 2 2 + chk_add_nr 2 2 + chk_rm_nr 1 0 invert + fi } =20 # [$1: error message] --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 1A270187323 for ; Mon, 15 Jul 2024 10:10:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038220; cv=none; b=BYtHIaVb6AhHySlwExpbb7PH5HLab40BlD7gjsOPjC12o2k/xYAOdYBcpq72ZzrD/WCgCRNvSDqHNY/sqJRQr/IBc3xX8C4sstg4foznDvTz+JqDGg2KxIRqcSNKe94tV/oznqNgXVlrjCXSXSBpkMuQJo/+yyggIPpJy5REdPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038220; c=relaxed/simple; bh=NeGnvGZJJrFKiJ4bDW0BRf/DH1jtpcLxEeaQhKnLGbU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p39IS3vKpLpYXz5YLCQKjmWy8kpvXp9cST8thU6nxjoinUhpA0QtLSgiIsWJHd857Gj8YMKJXma6SnjSJmL8S/qxCdg/Qdle8yKmyaqsV11YzTcJXzDgpGevpBrTtF8YQIXNxFA0suK48K9Hez7eiMuJbamgcfoTVU4GVeQ3XyY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o+hNEUsP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="o+hNEUsP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14DACC4AF0A; Mon, 15 Jul 2024 10:10:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038220; bh=NeGnvGZJJrFKiJ4bDW0BRf/DH1jtpcLxEeaQhKnLGbU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=o+hNEUsPNxRf9PUS0AT1U7gvDjLbdvk0drsVEYHDAzk8TQXqUdyk+cjjqLxGh5HSf Zw2K7pIi/NjnzqWJfTlU7qsctOHq2/WvRMy25xFOS1cuT7wp5u7eUCURZu+sJ56rLo cw0SF6VLGTX47uWf45wkJzHURNloW2GpGJJ9HnrtUZgA5WKgTs6GsS8LPltE2zOdtK W3c5T++gEbrL0SEoJR+AmqeiDcdEw51gsw1eQ0x1sTgJO/Xs9M3Ke6SM9sBBQ+ooSe e5hQlN926M9rAIyIzFaTG5C/sFEPivotDXCAXX/IZoiqwTinnIxw523d3Hn1XeWfTI JO0c070G9XMUQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:52 +0200 Subject: [PATCH mptcp-net v2 14/17] mptcp: pm: remove mptcp_pm_remove_subflow() Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-14-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4468; i=matttbe@kernel.org; h=from:subject:message-id; bh=NeGnvGZJJrFKiJ4bDW0BRf/DH1jtpcLxEeaQhKnLGbU=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3ZWbmm9FqzPnukLZtJ0qOhleMv4AhugAEy 0nStEJNGAuJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c5t2EACv9Iraw/EZ2p0fl7hACxfUjK/0Jb7TMI7pFto9m/NyFJA1683ve5s4JwHnOnFj45t8jAq n7b4T9h+cTbzxlCHxAcKbkGaZ0kX4ozcqrS6Nqvk+FL3IHDWpoyoGlcwCulwpjqUtreIuiHrahE WqJgQL2cT+SkKgjX89YNZyeY6YAZ6dtXJ1Z1TlaXm/IcJElZHRaInaRDlU1L06biCS5Ezgi3V92 q00mTuQ/H7gZXPm/OCuqExUoTPlTXejAZ8Y7ihpdhFB/s2EE+PJIloABJ+cvEsXXMo/krQdGAf0 gb9YkcmeK8RRRiRkQodQEC7YClKEL5HsmsT3sAe0SQAah9IOnavWz+pUDt9tS4Nf21umy1bnBmH v4+HjOzrje5ujDnjlDes7NnspDiIyzqgoAqnRa6IFaaS3wU9uzd6K86Rkcm42PrGtjKSzVDEOZL iZetyN6z5eRvLm65FV1jG852rUfwcp1veBBUqbozTjC2n3kE744SpDCWXah2pJTgoOHw6dCRgbX +gVmVxby4NNNI7vPT3rHTGWDkC1H+I+kIdDNwlJyZJzVG3mCeI9tXs+NDRLWI7UQcGHkhgYQnNa /i3CWzxCxXsj0Nz2aIjCi5alpKE0xwDZ4fgH5xUYCec9czqiA6UUdUfrfTyXxliAdfm0m4F8B5F buWLDjk2RzVo5Jw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This helper is confusing. It is in pm.c, but it is specific to the in-kernel PM and it cannot be used by the userspace one. Also, it simply calls one in-kernel specific function with the PM lock, while the similar mptcp_pm_remove_addr() helper requires the PM lock. What's left is the pr_debug(), which is not that useful, because a similar one is present in the only function called by this helper: mptcp_pm_nl_rm_subflow_received() After these modifications, this helper can now be marked as 'static'. Note that it is not really a bug, but it will help backporting the following commits. Fixes: 0ee4261a3681 ("mptcp: implement mptcp_pm_remove_subflow") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 10 ---------- net/mptcp/pm_netlink.c | 16 +++++++++++----- net/mptcp/protocol.h | 3 --- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 55406720c607..1f1b2617d0f5 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -60,16 +60,6 @@ int mptcp_pm_remove_addr(struct mptcp_sock *msk, const s= truct mptcp_rm_list *rm_ return 0; } =20 -int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_= list *rm_list) -{ - pr_debug("msk=3D%p, rm_list_nr=3D%d", msk, rm_list->nr); - - spin_lock_bh(&msk->pm.lock); - mptcp_pm_nl_rm_subflow_received(msk, rm_list); - spin_unlock_bh(&msk->pm.lock); - return 0; -} - /* path manager event handlers */ =20 void mptcp_pm_new_connection(struct mptcp_sock *msk, const struct sock *ss= k, int server_side) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 44092246259c..96336a87973f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -858,8 +858,8 @@ static void mptcp_pm_nl_rm_addr_received(struct mptcp_s= ock *msk) mptcp_pm_nl_rm_addr_or_subflow(msk, &msk->pm.rm_list_rx, MPTCP_MIB_RMADDR= ); } =20 -void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, - const struct mptcp_rm_list *rm_list) +static void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, + const struct mptcp_rm_list *rm_list) { mptcp_pm_nl_rm_addr_or_subflow(msk, rm_list, MPTCP_MIB_RMSUBFLOW); } @@ -1454,8 +1454,11 @@ static int mptcp_nl_remove_subflow_and_signal_addr(s= truct net *net, remove_subflow =3D lookup_subflow_by_saddr(&msk->conn_list, addr); mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); + if (remove_subflow) { - mptcp_pm_remove_subflow(msk, &list); + spin_lock_bh(&msk->pm.lock); + mptcp_pm_nl_rm_subflow_received(msk, &list); + spin_unlock_bh(&msk->pm.lock); } else if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { /* If the subflow has been used, but now closed */ spin_lock_bh(&msk->pm.lock); @@ -1608,8 +1611,11 @@ static void mptcp_pm_flush_addrs_and_subflows(struct= mptcp_sock *msk, spin_unlock_bh(&msk->pm.lock); } =20 - if (slist.nr) - mptcp_pm_remove_subflow(msk, &slist); + if (slist.nr) { + spin_lock_bh(&msk->pm.lock); + mptcp_pm_nl_rm_subflow_received(msk, &slist); + spin_unlock_bh(&msk->pm.lock); + } =20 /* Reset counters: maybe some subflows have been removed before */ spin_lock_bh(&msk->pm.lock); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 19d60b6d5b45..f2eb5273d752 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1030,7 +1030,6 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool echo); int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_lis= t *rm_list); -int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_= list *rm_list); void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_li= st); =20 void mptcp_free_local_addr_list(struct mptcp_sock *msk); @@ -1134,8 +1133,6 @@ static inline u8 subflow_get_local_id(const struct mp= tcp_subflow_context *subflo =20 void __init mptcp_pm_nl_init(void); void mptcp_pm_nl_work(struct mptcp_sock *msk); -void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, - const struct mptcp_rm_list *rm_list); unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk= ); unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk= ); unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk); --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7582218629E for ; Mon, 15 Jul 2024 10:10:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038221; cv=none; b=fOSZ8kMuQK2KEHpwp8GTUlpB/1+eFMhvr2Ckvg4BI6ZFBG91iiH5CFWO+h6w/+qHoN0KPjZtW5pCPqJD4Ecx1u+j4uGZL7Mjy3tP+Do7jj/jpdWDueqGDRj/+Hia9mA2Gv7RF8NwH28ZTkw3z2h2nvwOIAdZk4ymqcvFI9fw1uc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038221; c=relaxed/simple; bh=blOWQA/F005Tz1Q/hizFMX7CIZmnvE8H1ikmy20WQec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hc9ifV09k6yBTwVUrptYOGKJyGI/lSxshwqNL/mDR/NAtSxCNxw9QcUQ5jbezisoSaB2CShtC21ma4B2BtSRJjqbPn/G1v07JtQmzxEmeTO+CiXkk9qR0iPEqH7EaIqFSW9o4f22NpOC5OiNFsvnEWtt52TbGBYdgW2pQwm9UUQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GLcVssAE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GLcVssAE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B372C32782; Mon, 15 Jul 2024 10:10:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038221; bh=blOWQA/F005Tz1Q/hizFMX7CIZmnvE8H1ikmy20WQec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GLcVssAEzhWEJGrpyirb8LKhrPRp9NBfZIzxdDPqkmU7yRfoGV3v4ckmHMYk59NZS oqx/UV9mLMd8GzhWlO8M8AY6GvElKCVGOM4NZBN9jx/uuOQL9fZNF6kGSIjDKY6ycN Exuv0CF48XJfm/ZXn5Lm4feH6hJlJ1k7pf/30FgwzQPTRQwyKaMIGWX8ZpdL2vb4xy wo9WxB3YqsD4T4EQnRG1FdmPyl8I7TC5jPfSFogMD+q8Dlw1yBQHiuas4PeHn6uLhW OqQfcwqV/q9Yvder/aEfEClURKsn2F0Mj9Hs6gOsOFKlcQyqXMN8zQluV9c8b9//d4 4ZLZsTvUANcwA== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:53 +0200 Subject: [PATCH mptcp-net v2 15/17] mptcp: pm: only mark 'subflow' endp as available Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-15-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4021; i=matttbe@kernel.org; h=from:subject:message-id; bh=blOWQA/F005Tz1Q/hizFMX7CIZmnvE8H1ikmy20WQec=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV3CzvPCDwQe6TzSWZDvy45JK9zauZrB0Pg4 pPPF9WMPU2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c0bvD/9zo6bHGVAhVUAhWwcUZBpCO/JsY8+41vi67Ye0tB46O8XMU8dJA6zXIaaz/5brogN4mI5 yzFvv0Eek7vwL6c0nLIpRA5ROrk11yokHq96e1UG31ZKdGVdL71cch44yySO3/WsbQvzVK22ZuV kvOZvuQf3W1ChGKWbCUCbpWK1vrCPMS31pP2q2rilglLc2zu4vVirNIJQ3xgrQXaKojk2va9rKP +3dftupF17LpdgPpgz/L0gb7Yis75R3kTto4WtcbMsZwx0Sg7TkNePvZ2xwN0+iAknjWidcpsSH Er/uqWqR5HGk5O4CXntvTcfUcRztDpeViTN/df3x0sv1mVVcy/g2pYS8RDsDY3kNHkaa6/sUmsf SHQRPmj7Qt1TXy69uLLm3rqsILE0csSPSodANyAJI7XnH7QN+bT6UPoogJdNo8uWpPflZR3DPS/ Dcgm7kczSYAfz5WS4VFMSarDPWg7Vod/CCty9S/mwGVEFR4DIXylOajpho8HyfFZd3gW5mv9wHb KW3Hvb0IrqStoz7RLXzI3E2FZjFYzH52trKoJNSlbVXJlKGG9/lBXqm3hjffMfvfhuJXkwYuIIF nx3zRfOkdb/KFIYkcJ0UQVTtg4OS5n3+0Lz2eCdCwSW03x3LoDju3OZ7R5w0MhZMsDXkl4ZTalK Nnw6M5EcvAn6Ykw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Adding the following warning ... WARN_ON_ONCE(msk->pm.local_addr_used =3D=3D 0) ... before decrementing the local_addr_used counter helped to find a bug when running the "remove single address" subtest from the mptcp_join.sh selftests. Removing a 'signal' endpoint will trigger the removal of all subflows linked to this endpoint via mptcp_pm_nl_rm_addr_or_subflow() with rm_type =3D=3D MPTCP_MIB_RMSUBFLOW. This will decrement the local_addr_used counter, which is wrong in this case because this counter is linked to 'subflow' endpoints, and here it is a 'signal' endpoint that is being removed. Now, the counter is decremented, only if the ID is being used outside of mptcp_pm_nl_rm_addr_or_subflow(), only for 'subflow' endpoints, and if the ID is not 0 -- local_addr_used is not taking into account these ones. This marking of the ID as being available, and the decrement is done no matter if a subflow using this ID is currently available, because the subflow could have been closed before. Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 96336a87973f..ed24a7045619 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -834,10 +834,10 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mpt= cp_sock *msk, if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW) __MPTCP_INC_STATS(sock_net(sk), rm_type); } - if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW) - __set_bit(rm_id ? rm_id : msk->mpc_endpoint_id, msk->pm.id_avail_bitmap= ); - else if (rm_type =3D=3D MPTCP_MIB_RMADDR) + + if (rm_type =3D=3D MPTCP_MIB_RMADDR) __MPTCP_INC_STATS(sock_net(sk), rm_type); + if (!removed) continue; =20 @@ -847,8 +847,6 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, if (rm_type =3D=3D MPTCP_MIB_RMADDR) { msk->pm.add_addr_accepted--; WRITE_ONCE(msk->pm.accept_addr, true); - } else if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW) { - msk->pm.local_addr_used--; } } } @@ -1426,6 +1424,14 @@ static bool mptcp_pm_remove_anno_addr(struct mptcp_s= ock *msk, return ret; } =20 +static void __mark_subflow_endp_available(struct mptcp_sock *msk, u8 id) +{ + /* If it was marked as used, and not ID 0, decrement local_addr_used */ + if (!__test_and_set_bit(id ? : msk->mpc_endpoint_id, msk->pm.id_avail_bit= map) && + id && !WARN_ON_ONCE(msk->pm.local_addr_used =3D=3D 0)) + msk->pm.local_addr_used--; +} + static int mptcp_nl_remove_subflow_and_signal_addr(struct net *net, const struct mptcp_pm_addr_entry *entry) { @@ -1459,11 +1465,11 @@ static int mptcp_nl_remove_subflow_and_signal_addr(= struct net *net, spin_lock_bh(&msk->pm.lock); mptcp_pm_nl_rm_subflow_received(msk, &list); spin_unlock_bh(&msk->pm.lock); - } else if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { - /* If the subflow has been used, but now closed */ + } + + if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { spin_lock_bh(&msk->pm.lock); - if (!__test_and_set_bit(entry->addr.id, msk->pm.id_avail_bitmap)) - msk->pm.local_addr_used--; + __mark_subflow_endp_available(msk, entry->addr.id); spin_unlock_bh(&msk->pm.lock); } =20 @@ -1501,6 +1507,7 @@ static int mptcp_nl_remove_id_zero_address(struct net= *net, spin_lock_bh(&msk->pm.lock); mptcp_pm_remove_addr(msk, &list); mptcp_pm_nl_rm_subflow_received(msk, &list); + __mark_subflow_endp_available(msk, 0); spin_unlock_bh(&msk->pm.lock); release_sock(sk); =20 @@ -1909,6 +1916,7 @@ static void mptcp_pm_nl_fullmesh(struct mptcp_sock *m= sk, =20 spin_lock_bh(&msk->pm.lock); mptcp_pm_nl_rm_subflow_received(msk, &list); + __mark_subflow_endp_available(msk, addr->id); mptcp_pm_create_subflow_or_signal_addr(msk); spin_unlock_bh(&msk->pm.lock); } --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D496218629E for ; Mon, 15 Jul 2024 10:10:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038222; cv=none; b=iHLlh0AKYwssIQJ3U1lGnsiSSmPB2uBTimslslBRtagPu/vQlrKLTcpbguxFgY065EceFlNaJT7kNzWR6vfUR1kdpojCwmmBG/Au3QGINq/FBcGm8PeLkQDwPS5xcXlVi9QzEP+Ac7jQxNH9VFaMLmm8JEqiZclySWhQXnvxXHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038222; c=relaxed/simple; bh=QKZjq5FzzjLTObE8Ae2GrqDt6R0+REs2PPCkJTp/OgU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PRFirZvE684RPOBKMpvbZ0bfM4xAfK4EOWD7pPfpA5LFQwwDucaflxpBFlXuApxHSlJW0m54OtcP+3cBEOfDrHJHoGDswuOECK4JT60iayYAfSMRR7aIg1yKnZ5r3op1bZHEh44GiqZxo9O83tnxZarLkWPbNBddnHH5A1phycM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eDvpsEwJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eDvpsEwJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CEFFBC4AF0B; Mon, 15 Jul 2024 10:10:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038222; bh=QKZjq5FzzjLTObE8Ae2GrqDt6R0+REs2PPCkJTp/OgU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eDvpsEwJab+BmkfWqG9Ke0xrAd8gb7oPzE2QvcYFPVY0g7oWQ+Qba2szMq3o5N65l eiU9s/in3FNQr2pqf54/CN4mfDEpXvowQej5vSIETGhbHpcON0SSgUOk0EwVPBIC25 iTTSqPY/HilP5fnNmqjqBn70J8UaF+TCCSRfZNQYwXFFt23KsR2pe6wQ0LdfEwk3fK Q+ixllhGedQLYk2pMfxZivMiISwlHpuFn+WR0rnyIcOeatlAwP+Kjkg2c5ldZHENrJ vKZQF22e+2Uak+YK2qkqcFoHzH1cmavYmr6GfeVEi7L51/MDRfnVK/PFhB7mfWBfMo Fghhf2v+T5hBQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:54 +0200 Subject: [PATCH mptcp-net v2 16/17] mptcp: pm: only decrement add_addr_accepted for MPJ req Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-16-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1961; i=matttbe@kernel.org; h=from:subject:message-id; bh=QKZjq5FzzjLTObE8Ae2GrqDt6R0+REs2PPCkJTp/OgU=; b=kA0DAAgB9reCT0JpoHMByyZiAGaU9XfI6VOruw/C3lP2NZmpAMnGWRqVUTra4ya2amZerc9fM YkCMwQAAQgAHRYhBOjLhfdodwV6bif3eva3gk9CaaBzBQJmlPV3AAoJEPa3gk9CaaBzTooQANLu 4rnykkGj3Z/YEQ4ot5StI5WzlwxN6dgcH6Lvb/lhBzqte+3Z9qqJlNeXtitRC5syY/nysEpLRO6 Fa+9bSijtEkW8fumxaeqAIdmfYP+4iUZQYXmorp1dErRVOSPD5Qy9nT3CDnhB1Bu8cpa9XzNIhI se6sHD33ud3fRCSfCfL1G1DS3bYk8X5EAkwF909V7OmRIQO9g2y6FGkOx9LBoZQvIv0dN8WlKdI nyMmqIVo1u/8j8ZXvvo5u4B7INvuHs2+qPUd0g+0rQP+g2wIEmcC9JZOKDAIo8o0QSFN2NS1Jb5 75tn/cS/HPdgl5dPcHKvMTqKVdlli1P7loCRalk4bc+d+4qGQ0b8t03+uCdMTONXFNo6NazYK/H DMDWdF8eYnr91Ljb3o6pjNxJ6T+GZFL4e+T1Jt3v0f3tBVXsfmkIantu0U8fuYrY1sFHVZ3J7+b QSXbHHvMrdo/3R/lHJ1hWOMfX1pEs2IOtj0VoBA5a0kHfU8YzwLdl3EvnTNUjcj2fhsYX4USNkg xp5wzvWu9SqPYZJQWDhAA6usxngwXXhvKFs/bd/LHIzUqv7mdNAfPRiEblxlfX7pfK7AmOqMcBc H84t0I+I1GegP6pR2MfN1RbVamtr9pZbX6uNPvfoyYsekZJVkdPgepsjE6DBqIA9smUjt8uKJrU cpY10 X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Adding the following warning ... WARN_ON_ONCE(msk->pm.add_addr_accepted =3D=3D 0) ... before decrementing the add_addr_accepted counter helped to find a bug when running the "remove single subflow" subtest from the mptcp_join.sh selftest. Removing a 'subflow' endpoint will first trigger a RM_ADDR, then the subflow closure. Before this patch, and upon the reception of the RM_ADDR, the other peer will then try to decrement this add_addr_accepted. That's not correct because the attached subflows have not been created upon the reception of an ADD_ADDR. A way to solve that is to decrement the counter only if the attached subflow was an MP_JOIN to a remote id that was not 0, and initiated by the host receiving the RM_ADDR. Fixes: d0876b2284cf ("mptcp: add the incoming RM_ADDR support") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index ed24a7045619..d69d51309419 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -830,7 +830,7 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, mptcp_close_ssk(sk, ssk, subflow); spin_lock_bh(&msk->pm.lock); =20 - removed =3D true; + removed |=3D subflow->request_join; if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW) __MPTCP_INC_STATS(sock_net(sk), rm_type); } @@ -844,7 +844,11 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptc= p_sock *msk, if (!mptcp_pm_is_kernel(msk)) continue; =20 - if (rm_type =3D=3D MPTCP_MIB_RMADDR) { + if (rm_type =3D=3D MPTCP_MIB_RMADDR && rm_id && + !WARN_ON_ONCE(msk->pm.add_addr_accepted =3D=3D 0)) { + /* Note: if the subflow has been closed before, this + * add_addr_accepted counter will not be decremented. + */ msk->pm.add_addr_accepted--; WRITE_ONCE(msk->pm.accept_addr, true); } --=20 2.45.2 From nobody Mon Sep 16 19:11:11 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 190E518629E for ; Mon, 15 Jul 2024 10:10:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038224; cv=none; b=rctM2wQ3XiI/4N2/iJhMHi7fIi0fc3kiYapCfiOz0ArngudNzrWRDDhQCdHrH2u66Ftcp/uFScDCPG/fCHvnQ7Tz04hwuMDWx1TfFaQiIlgkcvUE2CzoTB0QdhPujkO1yZJ4EU6yfbG9lbEqbOoMWk7lB9rqJyqQNR8SlHutcQQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721038224; c=relaxed/simple; bh=L3MZt5Jtty3KaeLdgFEkH4d1+wvGLCJaiHMqUpEzJJE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kh4KbX027+ao2/jDfc44lwcyfi6MNQcHDtSvWIRYPZdEPK/v/CHxjW7YWc3k71W6vBKMcKSRxT+U5ySrqS/1ZD87TbxTfHkligfA+OQAO7ONcAyk+G0bJP1hR0XSuMfNn+0bmMQYLaP9PR6mKEzE3YEoJFtRyROTXnb3lNy7LeA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qJi/vs7j; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qJi/vs7j" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30D61C4AF0A; Mon, 15 Jul 2024 10:10:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721038224; bh=L3MZt5Jtty3KaeLdgFEkH4d1+wvGLCJaiHMqUpEzJJE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qJi/vs7jomnmmCGWtbe3VEov9hP/+zWi18IWLgNWemaYYeIu+gv85p8OZFaLvJGqQ R2cUaD7QSUoUAuYgZTKliGoY0APEPbnduQKqz6ZyEKzYYNnrjZGkD6uIR8B7HszVit TrobjdtF+J2r9Yrs5m5eV9PmoWeKtYkh3lRl/vctNc526qecJkynS3nukCkuYxUOwE Fjuj22mnWPMIU4+6sFgeS6df5/ur0rpVJ6JfJ0Ik8CUVz0QSth+hMvE/dHN8aEwgEM kshiiv6WQ5b4oiAq27ffIYdbcCE1FIMvz1V3uMXFU6eWCJtanjJK/ryoIElXFBgYYq aHpffOgq2ld2w== From: "Matthieu Baerts (NGI0)" Date: Mon, 15 Jul 2024 12:09:55 +0200 Subject: [PATCH mptcp-net v2 17/17] mptcp: pm: check add_addr_accept_max before accepting new ADD_ADDR Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240715-mptcp-pm-avail-v2-17-fc5153bd1f6e@kernel.org> References: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> In-Reply-To: <20240715-mptcp-pm-avail-v2-0-fc5153bd1f6e@kernel.org> To: mptcp@lists.linux.dev Cc: Paolo Abeni , "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=926; i=matttbe@kernel.org; h=from:subject:message-id; bh=L3MZt5Jtty3KaeLdgFEkH4d1+wvGLCJaiHMqUpEzJJE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlPV35HI611pYLR4FBId8jfpK1VY+RJbuXffxN SPP2nbOwOeJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpT1dwAKCRD2t4JPQmmg c5yyD/oC0sLhCzczR5g82J7B06EE45chAZ72hM/9poogTdRy6h1m5/Du7Dpe/iholnn+IjLN4vM 6ZmOYxNCmYtiylIXcX/16JbbuN41aEF1IZBp8LVQ3uWNntXzyI7DOCBM13rNAZ/GLRVz/Nz/hN5 RxYoHi8WNhiDEkSFi0fxfveq+9Uw1C8p21AjLAVXKLW+oUwq+dsgCw5mU7mOE+nJGIXJkWhlDeV lKoIx1L/gNhyR/+tgOWCBspBX7RaIh3hEbwyZ9iN6lS5ICUKSF1GNwjVF4I9tQ1BIO9hwrzAJ6o nn/sH6tLl6bnPXdsKyecWmfq4mzV55SflVKOB1p19e+Q+jE3nk08RsKaC+4fJmwYtJpHR787jDO 2YtyoXZLzyRSYCt6+hnPd+o38E5Y1hiMdXCpQ2iOXwMHT+K1tazyRPo+Q4YNAhcX9AyAvq+YPKp o77Bj7R+rRLLaBNOFLlNFtDpAw1m7SlyvwWCkqus06WXTHAVYOd2lEUZw8UkP+YPhXpdFkblFFm qBi+b7hR63CRJ+H1Y9eiJqmrIJwNd63tr83C5bnhbtgng3aSlt2g8K5YQjTM5WjUUJ2RzHkc3C+ 4SX4qOdSduEdHJ/iLqRL1pwpFzjccV5Ji99GIQlXw3rnJXz/ctswJx9T16Xsdzu3OHjegW7g1z7 zZIDRDNGbZb+Npw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The limits might have changed in between, it is best to check them before accepting new ADD_ADDR. Fixes: d0876b2284cf ("mptcp: add the incoming RM_ADDR support") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d69d51309419..57d967fde843 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -849,8 +849,8 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, /* Note: if the subflow has been closed before, this * add_addr_accepted counter will not be decremented. */ - msk->pm.add_addr_accepted--; - WRITE_ONCE(msk->pm.accept_addr, true); + if (--msk->pm.add_addr_accepted < mptcp_pm_get_add_addr_accept_max(msk)) + WRITE_ONCE(msk->pm.accept_addr, true); } } } --=20 2.45.2