From nobody Sat Apr 11 11:23:26 2026 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 BC2AD26CE05 for ; Fri, 10 Apr 2026 14:32: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=1775831527; cv=none; b=Bxp/+82ION2sKsdLK/3ZGgkdBJGXAlVA769o5/opKpsOhUq9zYdBgj1+9llcLpwAXlQUyzIHony0E6Obg0Iy+KY/FaGLzTAQnEkU/MUdJm2OjhxuE7fjvxvB2p2/lIrY7lKCcYM1mE6zoiucr7eyrbGf6l1G74pNQDNxSCPWYvY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831527; c=relaxed/simple; bh=eX/lXtQo+xV/gG1QYefv+KlGzyuA0g/SxpiBYJwB2Ac=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T4hLqGYh5Kk8JlrvH7Wt+yBEZatMMaWGshKtLkg0RX/0Fih3VYrtWEScVT6HsjURjlPt94eHKwpVrHRzjJ4+5wS63Du1OJtZlRLysVPljklVS/0g0nJ3Pt8SwgIt1vRR7hR/n3ikDMnBjhGnT46e0p8QnXFrXlV+gxYuEKjDxUM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pw6YYBpQ; 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="pw6YYBpQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4043BC19421; Fri, 10 Apr 2026 14:32:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831527; bh=eX/lXtQo+xV/gG1QYefv+KlGzyuA0g/SxpiBYJwB2Ac=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pw6YYBpQ5BMqFwHuLTRd0yJBWhSHUwADuJu0XPzTDOcLwmrPyGqucwLnY5kBjot/e i5/BsKV9nRdtv+GVnbmrwGzbcaYZVHTJ0tQMcEiQsradBy60hXlYAlnukyFW+9Q6P/ f6Q+MASz+AsEG1jC13o3Noo3F+jkXTYGxI89C677yU3hLF8mae/GBD0EMwgkAznqqI 3k3PVWAa2qHTZPI80UCvXAXX8rTCux0QqDM7IPsvAhjGoYH1z1tWw6sEprKlFBiy0F QVx+52/wVXd3Jj9g/OuB4BAcpWnBixdRGP6qNDXjDSv548IAYQbv/bWKSPlKY8k/YW TFRXdb4Kw9fQA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:39 +0200 Subject: [PATCH mptcp-next v2 01/17] mptcp: pm: ADD_ADDR rtx: free sk if last 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: <20260410-mptcp-inc-limits-v2-1-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=796; i=matttbe@kernel.org; h=from:subject:message-id; bh=eX/lXtQo+xV/gG1QYefv+KlGzyuA0g/SxpiBYJwB2Ac=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct5w41sp+cdcwSN+VqU9U7P4m12KMX8fhAsKl0/tP Vj4tDqyo5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCKv5zL8D3n4+aNrB3P5co3A wF/Pr2duE94Q8Sqt7OrxuZd3rwrWOsHwPzhg3b6d3i+tVqq1RvwIX7O3cK7usgSj3jKv+L1tB5d y8gMA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(), and released at the end. If at that moment, it was the last reference being held, the sk would not be freed. sock_put() should then be called instead of __sock_put(). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index fdadd0e8f77c..52f8f4eddfc2 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -368,7 +368,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) mptcp_pm_subflow_established(msk); =20 out: - __sock_put(sk); + sock_put(sk); } =20 struct mptcp_pm_add_entry * --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 8DE5F26CE05 for ; Fri, 10 Apr 2026 14:32:08 +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=1775831528; cv=none; b=rDGoGNFKNttkWq0CUiaseM/HyoPQcCIm2iCi/PfipSG5HS3tUCRzVB70KX/+jbR40t18t24b1M56ev6KeWCyE9fEwbjU31ROYBn347ZR0up7H+7pFpIIZmtzwy0hzzxShK8gqgwyhPABfDuPYETybt6jzWurQgGe8JF0Weq7HKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831528; c=relaxed/simple; bh=0KN6SmaLsFq4+oTKOP3cZm1bwxb9wxqcqaeKJ7O9c84=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R506ut/Ej/2yCh2Zmhr7maC8l3+BbMfnI/IGwTJvZpABXFIxNXjiyZZxYrByUcDfqwhU3W+hSweUz9QSwPtx/p7xpsoaCQPsvAD0v4pgBVi5e6lCdL1nbAmloGhO9N0djUhWCOsy2rhDdVo8kGWl7ZD668vjg2gWxyKrk10l+P4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b1i5iSYZ; 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="b1i5iSYZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 078D6C4AF09; Fri, 10 Apr 2026 14:32:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831528; bh=0KN6SmaLsFq4+oTKOP3cZm1bwxb9wxqcqaeKJ7O9c84=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=b1i5iSYZxhaPxzcZeNVju0e4YSE770oebiRTIBwICUnCPrqZLJEmJZtSbZ8btRozA FA5zA+27z3XWxtciXqH1OQLxzK/ZHtuwTrz4hHc0CuNKiDqw7uVEDMR7B9PEOxy5nM D5nw9FWz3lg7oOWD146ibrY1MNdLiYGqagm5MgxzcpZDReM0/p5W/BJq7p4clVRNOL b8kqAkItdcW2/Vk6MfoSU9glGea/2mp8v03gFllGo4KkKeGiOvyEhCrNlRsEMHsQws O3wJpoOcllptStU5EpFnKlcVBajMEGC77EO3icD0bv/VuoinqUl8jcXlu6ZwKv0YMh C6Qhf6mK4X3DA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:40 +0200 Subject: [PATCH mptcp-next v2 02/17] mptcp: pm: ADD_ADDR rtx: fix potential data-race 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: <20260410-mptcp-inc-limits-v2-2-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1178; i=matttbe@kernel.org; h=from:subject:message-id; bh=0KN6SmaLsFq4+oTKOP3cZm1bwxb9wxqcqaeKJ7O9c84=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct68/1jhccYWy/0Z9/hX9Qtw8Ob5Gkx2dPv3PWPfs u7mGJmvHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABMxUGX4Xys279ZZwU3L/k3y ifybPfOpneT6900/pZOUD8/vu22xrZmRYcn2hTWTL6Y2vLYM98oRXFVddPfPzwzJrcJ+wTX6rcJ beQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This mptcp_pm_add_timer() helper is executed as a timer callback in softirq context. To avoid any data races, the socket lock needs to be held with bh_lock_sock(). If the socket is in use, retry again soon after, similar to what is done with the keepalive timer. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 52f8f4eddfc2..989d87e2dc13 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -340,6 +340,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) if (!entry->addr.id) return; =20 + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { + /* Try again later. */ + sk_reset_timer(sk, timer, jiffies + HZ / 20); + goto out; + } + if (mptcp_pm_should_add_signal_addr(msk)) { sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); goto out; @@ -368,6 +375,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) mptcp_pm_subflow_established(msk); =20 out: + bh_unlock_sock(sk); sock_put(sk); } =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 493A3393DE9 for ; Fri, 10 Apr 2026 14:32: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=1775831529; cv=none; b=WDVbgtWMaW5uezsvfH7i2cZUGxEUamiXqg0qn+jLqbM0VCxZdcloAwJd9MS8ChDfABZSB+5KfLZCHMkTjqi20MIfaLxTipa2cnf+iJ9i4Uasl+waZvGASv+1XtKFaHZGFw6AxQKvG9zsU8HJwwUSqmEOl+BIMtZzBwcma0S+g0Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831529; c=relaxed/simple; bh=O0zAVV1rKPv2mpUxrgUq7nEQ158FmfJ+Hxcp3VZTW2Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pUrF90r2TGiUDpSIoXWOiE+g+XimXb6SYhyDk160AEBlwKrdETB+D03R9DbAovb0tTbGci47cZKucFAXyfjVpmQn3nU399rkL3YRo0uYLTI5hndlwacOEkD8gkvc1+w5fGL1FrHJLiiA4IqB4GYSaymJ5oQO44CsXe93jR4Bz7I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YEtjw2m1; 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="YEtjw2m1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2708C19421; Fri, 10 Apr 2026 14:32:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831529; bh=O0zAVV1rKPv2mpUxrgUq7nEQ158FmfJ+Hxcp3VZTW2Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YEtjw2m1O21daCUAVq3ThRDQ7tpPO9bJv0zOVPvv+p+afuQU7rq64I4vnLx4/9HEV 2EtLFlsprgTj+TbKXGPNyT3l8AFHQ14awVp5q0yKND3gzUIu+KHwlVxK2PCH9xYbqx o8H+B0Z18VWCKL4OwfEHIrZWQcsF2xlbnfvxvJrZy9l60mXf0APeLqo6ObvuRsO/Db RcQVI/KoLBUi9NYi/PuyqT2dzYZWAtJnFIRwLQaelMrXgwO4UeL5+MIw0w5Xe0+jqF 1anluxJz0iiS2ygDGCFodd43jPRkVZMyHoU3ZWTUNClw/Do0WkUH8fmEwCGH83rfBh MqP+KwL+Ba3zA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:41 +0200 Subject: [PATCH mptcp-next v2 03/17] mptcp: pm: ADD_ADDR rtx: allow ID 0 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: <20260410-mptcp-inc-limits-v2-3-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=875; i=matttbe@kernel.org; h=from:subject:message-id; bh=O0zAVV1rKPv2mpUxrgUq7nEQ158FmfJ+Hxcp3VZTW2Q=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct6KmZ96Zd4BRgvjV0e9n80/qta7YXYvg6D6ERnpt TeXCyb4dZSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAExEMYeR4cOfdZetTkeJPv1s ILD6YWbZgZsmDbsuqB369lz+hs7tVltGhu8zeEsrT5izt8zLkHjy4qO2Uexa7UM7H/TPkJ3RKO3 oywYA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 ADD_ADDR can be sent for the ID 0, which corresponds to the local address and port linked to the initial subflow. Indeed, this address could be removed, and re-added later on, e.g. what is done in the "delete re-add signal" MPTCP Join selftests. So no reason to ignore it. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 989d87e2dc13..0f35ea0e4f66 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -337,9 +337,6 @@ static void mptcp_pm_add_timer(struct timer_list *timer) if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) return; =20 - if (!entry->addr.id) - return; - bh_lock_sock(sk); if (sock_owned_by_user(sk)) { /* Try again later. */ --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 46EC130FC36 for ; Fri, 10 Apr 2026 14:32: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=1775831530; cv=none; b=GviZqmU8KLX4WgUaa2EHTfrDh7eIA2Pk9Ic9NVCYVDRamPW7JOq3UXGXGnjPwqfq7XXTDbsSE071ARPSdjfv2w+SDtQolBcCbZ/8PqvghuZipxvhWApoJIq4HH6jK//bfO0vDFrbd9Wc56T2CxfOU20zQXKjkThqUj9Z5mEspKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831530; c=relaxed/simple; bh=HZY2XN+a4Z9RhOVR+DImgT8aD+2/AsJyuNyLoXK01ZM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UW12ky6joSd2N8XMme+j+bNFaMtXNPv54bgVdjQblyoQNibRDFSLgUmc8Idf4xQaZOMri9K0ChyWeYgy4eykg0QaVPRUWkP/VPHIF8pmNFK52EKqbNhsurlsjvsp/+ZjHrygCHyLIJwym5PYEjKpj2H0OfPUGSWigd8lucMdjvM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JJX/tEdw; 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="JJX/tEdw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89A71C19421; Fri, 10 Apr 2026 14:32:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831529; bh=HZY2XN+a4Z9RhOVR+DImgT8aD+2/AsJyuNyLoXK01ZM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JJX/tEdw8rZhQ59Lj2jMG9Hy49DWZwHgK7CAzzXEaM4ToVppmmJ2SKzpQaWaTpPVc 3jfLSQGD+vrGeZ4+47HUTDdwfQvCEbEdzQU7/wfx2kw/pofeHKvr//aR/wkPLr39mg M6D6X8Ve0H1sYBKQhDasMHX1KyqYNUhw7U8Mq2/2GsAuzvt/gr7JjnLu2N/Nw/dfGz mdXQIJ9y8RuntiKXEAG+Qh3nIujPfROJSJTSrt4sRXDI1B9fDWny1yFbRkMQXaq82g fpMawqxxJigeZ9VIre5f4vM6yv8u5uj/KIvgAukg1Y6hZCDAmRkh1b2rMmhK3KY7yD Ljo5Fp7AmIdBA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:42 +0200 Subject: [PATCH mptcp-next v2 04/17] mptcp: pm: ADD_ADDR rtx: always decrease sk refcount 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: <20260410-mptcp-inc-limits-v2-4-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1202; i=matttbe@kernel.org; h=from:subject:message-id; bh=HZY2XN+a4Z9RhOVR+DImgT8aD+2/AsJyuNyLoXK01ZM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct5edmjPrKbDbz9kbb0dJjrxtebbiYuXztu/UurAJ KmIP5wlvzpKWRjEuBhkxRRZpNsi82c+r+It8fKzgJnDygQyhIGLUwAuUsnI8OTszgzBA4bBnOkL H6y3aHglnXZSkHv5ZM5c01+vt9w1/MrwP9lcWkbiU7+V6qtZecv+id16W13N/+yuU4J/4nVG/Wh HdgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(). It should then be released in all cases at the end. Some (unlikely) checks were returning directly instead of calling sock_put() to decrease the refcount. Jump to the 'out' label to fix this potential leak. While at it, regroup the conditions, and explicitly mark them as "unlikely". Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 0f35ea0e4f66..cb709c1edf81 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -331,11 +331,8 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) =20 pr_debug("msk=3D%p\n", msk); =20 - if (!msk) - return; - - if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) - return; + if (unlikely(!msk || inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto exit; =20 bh_lock_sock(sk); if (sock_owned_by_user(sk)) { @@ -373,6 +370,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) =20 out: bh_unlock_sock(sk); +exit: sock_put(sk); } =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 C9AA030FC36 for ; Fri, 10 Apr 2026 14:32: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=1775831530; cv=none; b=sP37hi7cU1gtA8HKTm0yBeXlO1Rhudob24GruY3wHGwo/VOClO333RXl7PeAeCSxNi9UFCv/sz87qBNq/VrvdsyWqwkumuNvSf8XMJYZvizSS+3ueea7eaDFDtDfmLahoEgqrySCAMAJzwP/hFM04H60gHyRCq6sZ2J3qCchKb4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831530; c=relaxed/simple; bh=jKWSTZKsuq/t6qoORPiArINB841k2CnSuCo9eJPMRDY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fDsXVOg35pXNLmMqXaSARREAaGDtuyT6CqZnY2XOMck8qJbcq9IORVOQnjNbWoP6r6SyCbFuWoiRCAPuLpEOsiCF9v6EfEk8E3ODErODV/CTeFCJ74UyoomdDVhNc4XYXqfqu2O8vtKDkd8MrlKEIYMZxRB9AHUw2O6ROu2jeZM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mknll7xf; 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="mknll7xf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 505EAC2BC9E; Fri, 10 Apr 2026 14:32:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831530; bh=jKWSTZKsuq/t6qoORPiArINB841k2CnSuCo9eJPMRDY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mknll7xfLpK5cyYPFe+1DqMlp7ruFfzakXEwzXDVS7NOwyntcXCaZc/eef4kMa8Uj 29YLRztS5DDZOLQZEIN3VH9wUoEtepYRjFKcXImtgAhQlZI7n8yOq5OEpU8pjLvdA1 10o32zByl17KzcYf5Y6eL6EKwKxhXDI/nh4IHZEsVYELq5g8cO1gwq1+N6owIeDYp0 /vQ+8EFOj4uwegIuB14U4ll0wDfG8uBN1VV/osJouzwZepUrBHI95t3RrcuPEYiLay mrBq2Kvp0vIB4vE+BFryZdvO70fL7npft/sosPcyV9yGYLRHQ8PLnt73MTXc80T9Zo afP0dgreD9vuQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:43 +0200 Subject: [PATCH mptcp-next v2 05/17] mptcp: pm: ADD_ADDR rtx: resched blocked ADD_ADDR quicker 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: <20260410-mptcp-inc-limits-v2-5-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1699; i=matttbe@kernel.org; h=from:subject:message-id; bh=jKWSTZKsuq/t6qoORPiArINB841k2CnSuCo9eJPMRDY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct5uXjDx2dldu5v/8h67JcfhPrniTWbAmS3vg3fPF Xqw5d8+7o5SFgYxLgZZMUUW6bbI/JnPq3hLvPwsYOawMoEMYeDiFICJTPVjZOhtOlYZG7eMfc+V B0YvjVnl72et8ot24XnyhOv7WUM1zleMDBu231ssY2kl8dt2x3f9eW29devPXz4+yWgi+9Tb5h2 sEfwA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR needs to be retransmitted and another one has already been prepared -- e.g. multiple ADD_ADDRs have been sent in a row and need to be retransmitted later -- this additional retransmission will need to wait. In this case, the timer was reset to TCP_RTO_MAX / 8, which is ~15 seconds. This delay is unnecessary long: it should just be rescheduled at the next opportunity, e.g. after the retransmission timeout. Without this modification, some issues can be seen from time to time in the selftests when multiple ADD_ADDRs are sent, and the host takes time to process them, e.g. the "signal addresses, ADD_ADDR timeout" MPTCP Join selftest, especially with a debug kernel config. Note that on older kernels, 'timeout' is not available. It should be enough to replace it by one second (HZ). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index cb709c1edf81..f296fa300efc 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -341,15 +341,15 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) goto out; } =20 - if (mptcp_pm_should_add_signal_addr(msk)) { - sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); - goto out; - } - timeout =3D mptcp_adjust_add_addr_timeout(msk); if (!timeout) goto out; =20 + if (mptcp_pm_should_add_signal_addr(msk)) { + sk_reset_timer(sk, timer, jiffies + timeout); + goto out; + } + spin_lock_bh(&msk->pm.lock); =20 if (!mptcp_pm_should_add_signal_addr(msk)) { --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 934A630FC36 for ; Fri, 10 Apr 2026 14:32:11 +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=1775831531; cv=none; b=fvz7iqOgi0uV6fXUJP00lMQ6yfGwf2LRd9DO7uWKbksxvOjbLg2dbXpvkAtDcufzBw0wSafwCMECY/HmrdflH+ggOrWQ7Yw+AHF1qPQulY+kq5UTJHDCHcdI95+mWbB0wOhTe2jElnqSTIF4x4CPWg9r+b0cSf56DqDkYbtwECE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831531; c=relaxed/simple; bh=lyCxKoLVqtnAg11scnTrNTCA/EopjmQrm2zuvMvrsdw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nWKZ+zu6kZ8iy4Iwzd44hmEkOX4Bo9M/+m3qxkjD1VrZ1iWPAaNml/amlHk68uqD57DrKVrFR8lzImfCHBWCn27VU6cTnFKnAkqVXR3TxXgRo0sJoRGFCKI+x903H28j5uH/JhlSPsja9BNESx/Y/MxkQRd/XodRaBLkN0U04Zg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nrPymSfZ; 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="nrPymSfZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 173BAC2BC9E; Fri, 10 Apr 2026 14:32:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831531; bh=lyCxKoLVqtnAg11scnTrNTCA/EopjmQrm2zuvMvrsdw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nrPymSfZQ/PjbDECoII6iO0WbKrjX75i7ExJpTn/UOvhfo8Xg1p0YUkKRoyzvW5rZ hEnHDU3EZOF28rSO/53+QMhcqz9QaBp/P/xiHdaAN597xGRn7oL00HOnbE9b4AbW/Q KJacOs4PohUme3VND3HyZWms9LO2oUaY1oMBU9BKl2QjSOuxfttWSsJdIWv0Fg2v2b jFLtnUM3ng7IutCHs5lWYOtdMR5q/gozHu4xc2MeMcitF3AxuAl0c5RSNxcNI74sse XN5DKmoTjbNXmt0oJtrLdtO5KAM+lVxZQ1s7cAhrphnz7LkRLZU29zofztyk7iLPPC GnuQZYgk+SNcQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:44 +0200 Subject: [PATCH mptcp-next v2 06/17] mptcp: pm: ADD_ADDR rtx: skip inactive 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: <20260410-mptcp-inc-limits-v2-6-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1857; i=matttbe@kernel.org; h=from:subject:message-id; bh=lyCxKoLVqtnAg11scnTrNTCA/EopjmQrm2zuvMvrsdw=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct75rCYzv5EvRt9i0jHFrbu7Ys9W/XHtyDlgPSWmu TcvN4Wxo5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCI8rgy/mDpyjmnd0F08l99z go+T+vPNulp5BtdU+6ZcZZnMcOhvKiNDB7P0t6+6Ajvu9+d/6JWf/Gfq+/5d9puUmesCbc+tnf2 dDQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When looking at the maximum RTO amongst the subflows, inactive subflows were taken into account: that includes stale ones, and the initial one if it has been already been closed. Unusable subflows are now simply skipped. Stale ones are used as an alternative: if there are only stale ones, to take their maximum RTO and avoid to eventually fallback to net.mptcp.add_addr_timeout, which is set to 2 minutes by default. Fixes: 30549eebc4d8 ("mptcp: make ADD_ADDR retransmission timeout adaptive") Signed-off-by: Matthieu Baerts (NGI0) --- v2: restore accidentally deleted icsk->icsk_rto > max check --- net/mptcp/pm.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f296fa300efc..1c3376c01d70 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -305,20 +305,27 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) const struct net *net =3D sock_net((struct sock *)msk); unsigned int rto =3D mptcp_get_add_addr_timeout(net); struct mptcp_subflow_context *subflow; - unsigned int max =3D 0; + unsigned int max =3D 0, max_stale =3D 0; =20 mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); =20 - if (icsk->icsk_rto > max) + if (!__mptcp_subflow_active(subflow)) + continue; + + if (unlikely(subflow->stale)) { + if (icsk->icsk_rto > max_stale) + max_stale =3D icsk->icsk_rto; + } else if (icsk->icsk_rto > max) { max =3D icsk->icsk_rto; + } } =20 - if (max && max < rto) - rto =3D max; + if (max) + return max < rto ? max : rto; =20 - return rto; + return max_stale && max_stale < rto ? max_stale : rto; } =20 static void mptcp_pm_add_timer(struct timer_list *timer) --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 8B8FD3D093F for ; Fri, 10 Apr 2026 14:32: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=1775831532; cv=none; b=IWjzFz+RmjXfSWvRAoFrChmiRm0NDUF2io/+2l5PbgMtZOYlp32lO/elc8XIcJFDRQTkfOGNNRhri0CI4yavyS8isOtTdCljABXy5BeujdKUNFrUzfFeZFMvZ10Ir3kaIifMoT4FMDElx4GYDW2wF8nGxR8BJaL6raEAZ57v0ZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831532; c=relaxed/simple; bh=n7m5NGRD8flhLCd8/DFZTtI0Qr6tVjjJUIHGjUNfB0c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tHs5jN253/faOyJb8oSxKdT9j19qtlD+y2CrqIRzBIv5EltsQbz/Hn2dBgZvTYyGhbgi4WsHD80HIz5lixA3hXcfImZ8ejwaqn71/rlL8tHvk4ISdFijv7ulAmPBoW7R+atDlax9lTk8dGXtPnnECnaF+jz2mLokIYf2myZunSI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KEpAMUvs; 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="KEpAMUvs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D20DAC2BCAF; Fri, 10 Apr 2026 14:32:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831532; bh=n7m5NGRD8flhLCd8/DFZTtI0Qr6tVjjJUIHGjUNfB0c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KEpAMUvsKG1q80KGc43t0Xb5EyfDbrtv5ZlWSs8RIuwR3rT7CSmInXU6LsHIMWteS dwDnTtos2g1sVLmzlKH/EjWlo6evSsMaNc40CTR0khbZORltrww+3KgToJswLrz4Mf zaTESy3UrcrZCM9x6upyE1sKwpGDoeTzcP/isxYhk9J9rWG++DTB0uAYnyHdWkF5qM j1IXCo5U31SlOkOzIKut6MLU/eXV80Gf6RBdtnxhTs4MSVJ2mR452pC7R05JE/Uu+C Dl6XJe96vAqW/joNzaRr5yH0c4LA0vylfiKXMH8ZJMO+dwLCE8aOFpSejgn+sHuLFb AK8sZWCKSEoGA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:45 +0200 Subject: [PATCH mptcp-next v2 07/17] mptcp: pm: retrans ADD_ADDR: return early if no retrans 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: <20260410-mptcp-inc-limits-v2-7-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=747; i=matttbe@kernel.org; h=from:subject:message-id; bh=n7m5NGRD8flhLCd8/DFZTtI0Qr6tVjjJUIHGjUNfB0c=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct7drn1/vpMjZ0sNo6bQ9LNmi1eYqFzuzA74qJFaf mpJp3d8RykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwEQ+PWD47+ldIrdkufeiNs1Z nB95Go5oBwsl7DXZ/yni/JR3DNmzGxj+x+x917/TzGuZfXeQ+uzVks8tIy2vvX1X83y6NGvgB/5 dLAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 No need to iterate over all subflows if there is no retransmission needed. Exit early in this case then. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 1c3376c01d70..6f1950462556 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -307,6 +307,9 @@ static unsigned int mptcp_adjust_add_addr_timeout(struc= t mptcp_sock *msk) struct mptcp_subflow_context *subflow; unsigned int max =3D 0, max_stale =3D 0; =20 + if (!rto) + return 0; + mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 418EA3D2FF5 for ; Fri, 10 Apr 2026 14:32: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=1775831533; cv=none; b=j/no4VNZJtiVMB39oAOFYXxy1HlO+Gu9T0GkUYhKMkdAa3Ujvqp2Vzy0fa7WAJK9u8FQwlX3DZc2pcjxrl9TGEvLPDFEmpcqLBhGguk2ZymVNeJnzZpAlX16cR/z9PALX6E6MDDZyl9tCdXkTjWTGUyMnK5vcdkF+G06UjaeBcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831533; c=relaxed/simple; bh=b4jstWoMKDTppuhTqzUv2XXNJoB1zjCvFPjzYGxOOGc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S6bzI8e+PvPxukUIYom+lki32EBkA9Er2Uj8n0mxy3YalfoqZFMTyL2sqT/Xd5w0/SWGjSSG8XlfTuaGzd1ZALuEESc5o9I5prYQoNCk67XwGSI433fga1EvRHWyI9jF5Ui9PBRIBzQbBVTMOMczR+WyGCS3Yeur0RnxEd91fAE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JQYSL/Iz; 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="JQYSL/Iz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 997F6C19421; Fri, 10 Apr 2026 14:32:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831533; bh=b4jstWoMKDTppuhTqzUv2XXNJoB1zjCvFPjzYGxOOGc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JQYSL/IzslnJCX46Cph2anJVs7tkg+TpJCviiuPwNfZBHwQZXDNHeEQEeghsRgRUJ vplYq2PyfHZ/q0xO61C0JDlAd0wVE4juxwuL6DZW4+K0YfSiMOlv6O3kJTed2qb48u kwwTj7k4PiPjHhnOiVjJJFerlfv7k+VceyYaVbZNxXOp2DFU4Of2GIAQmtN5y0LWOF QYHh8h96Wzj7H7NXkDp4smU7Gt5LsrFGjhEo1Veh++DJbnsLk3E1XLlJJ4IXxuO3r0 AWn0inXlbTEJY0BD9Wql0gMrBynIV8sNRDG99Lqx6Nmw+Z6zlpqLh//JNlxByNkPTm amBXqV+M4rHuw== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:46 +0200 Subject: [PATCH mptcp-next v2 08/17] mptcp: pm: prio: skip closed 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: <20260410-mptcp-inc-limits-v2-8-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1077; i=matttbe@kernel.org; h=from:subject:message-id; bh=b4jstWoMKDTppuhTqzUv2XXNJoB1zjCvFPjzYGxOOGc=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct77YZeSuOrMqavPzpX3X8yacDi/manvW8Gbi29Ti uK/3d2wtaOUhUGMi0FWTJFFui0yf+bzKt4SLz8LmDmsTCBDGLg4BWAiCZcY/kdzzXu4M6VEbbFz z/S5Cys0W48tTL268XezmwrrrlPfHmQx/DP9ZfHDMHjN030nr+bzv2aQ0Zp5SvXo9FMx4o8t2wt 4trIAAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When sending an MP_PRIO, closed subflows needs to be skipped. This fixes the case where the initial subflow got closed, re-opened later, then an MP_PRIO is needed for the same local address. Note that explicit MP_PRIO cannot be sent during the 3WHS, so it is fine to use __mptcp_subflow_active(). Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Fixes: b29fcfb54cd7 ("mptcp: full disconnect implementation") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 6f1950462556..c7bf79a3d1da 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -283,6 +283,9 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *msk, struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct mptcp_addr_info local, remote; =20 + if (!__mptcp_subflow_active(subflow)) + continue; + mptcp_local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) continue; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 DC35B30FC36 for ; Fri, 10 Apr 2026 14:32: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=1775831533; cv=none; b=rzkijneyqISO6JS6fDvQcst/WdMBhQAseb4YWR3S4nozAFgFJ/GVJ3mD9/C9wLe0L2j+lzTT746v+LaU9qa8lGGEp4FBfQOfoM/vu6QxbrQFFSPXlS1losy3R0B78TDAogIvOXSnSfq/MfVJpbNXptesvcjXcJbkeGlFSyZIOzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831533; c=relaxed/simple; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KgxlXKJh1mEHaSjeWfGQbegRcYloDTXaIz6Qb9JquzlHsFwE2HGuNsgqz4hfvyrpAOGb4AsI7PC4cdFxf0kKX2RZxxnSD6VluM8yWt5PTUQwIHsa2SgZlrYTrOZsVMmXDBdzrQRxR5KjR0/HhwSUoadQcBbUtHGtptM9qd8wVGs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TFTK5PQS; 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="TFTK5PQS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60F45C19421; Fri, 10 Apr 2026 14:32:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831533; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TFTK5PQScCBoiP2/iKJCgK5wqbfzU+UKOSbcFl+nQAnJwJPXo7MCUz44HMcsRpYXc Yxz91IiVd7obGqx8VdbtrKbpSPj+/B2AA2/yExGgiqr2ukSE0f1fYued0j5gIj7DhY CfsbDPGQTd7UTyOp7m/uNrLweta495qESJKb6uNGdAjNDdiaxHThTIpDFTj+WILPEd 6VOei+laRnmdz0D02kHlroo6A1I+1WGnqVlfXOfbwYvmQWaOKonp4HSDx2vzbe/qrI I0ipp6PWTZqQ7aoI6pY7hiINyJ25izbJ+Y/+tdGfS6ZrWxz+1VVSML/aBzuky0gF8r Ns9ZXkaQ3AJuQ== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:47 +0200 Subject: [PATCH mptcp-next v2 09/17] selftests: mptcp: pm: restrict 'unknown' check to pm_nl_ctl 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: <20260410-mptcp-inc-limits-v2-9-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1497; i=matttbe@kernel.org; h=from:subject:message-id; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct5fbm8kyBXDJbnG/0KhbLHeg+S+X86Ldtxz+PdT7 WX7LmXLjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIlw8TAy7PNMmfPwwRKT4tZq cZ6N05yXyV97vU/Ncd7yQz0m1YKNOxn+ZzH+bPGX9RH56jadb/fdyjKGH+Kiyx9u+MxeFsQ+6eA sFgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When pm_netlink.sh is executed with '-i', 'ip mptcp' is used instead of 'pm_nl_ctl'. IPRoute2 doesn't support the 'unknown' flag, which has only been added to 'pm_nl_ctl' for this specific check: to ensure that the kernel ignores such unsupported flag. No reason to add this flag to 'ip mptcp'. Then, this check should be skipped when 'ip mptcp' is used. Fixes: 29f4801e9c8d ("selftests: mptcp: pm: ensure unknown flags are ignore= d") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index 123d9d7a0278..d844ee687a29 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -192,9 +192,13 @@ check "show_endpoints" \ flush_endpoint check "show_endpoints" "" "flush addrs" =20 -add_endpoint 10.0.1.1 flags unknown -check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" "ignore unknown = flags" -flush_endpoint +# "unknown" flag is only supported by pm_nl_ctl +if ! mptcp_lib_is_ip_mptcp; then + add_endpoint 10.0.1.1 flags unknown + check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" \ + "ignore unknown flags" + flush_endpoint +fi =20 set_limits 9 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 A265030FC36 for ; Fri, 10 Apr 2026 14:32: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=1775831534; cv=none; b=ZAQtOUzaAeoNt9f8IlhsKziuiGjy8w3Elxec35L5LTv2fB5xOmow3N16iEkur6asKS0EYQQYKjG5/XEprN1LEu5YPUvNEDvCi4p10l4XPnse8dsK8kStARpoBy16BSsJfZAYcxKTSN93ADK4XUAvWuyOF3nObpMR8USiKkEBSG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831534; c=relaxed/simple; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WQ/e4Zx2ObDER4pVXFDzv6CnyKdksir1mmLebIlbeUNWznLGX7SXq0kFakGp0g2kZd96S0BS8hifXMptyrOS2eKYS5n1u2BptbKhoMRRgqBtSbNtdEOn92TtcdOkiBGW9PgzxsOoe52PY6bM2h8S/fxhthMmlY6tluBoEQl2tuA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=maAmxFxy; 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="maAmxFxy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 277A3C2BC9E; Fri, 10 Apr 2026 14:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831534; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=maAmxFxyFY1kAZfAXdvJkTDXP5DRt81GoEZg0q9ZnUa7SrbbTn4EvbhMq00fyc4xP Tw+j4Yoyx7tKHX2XKOwcJ/SftS881Ywe0EB4dVuO0HV2HmYejBXwzz0oZPpNtodRzQ Z9Rj20MTdM6uYspgOYdZn+DsFGVm+wR2jbFoq30FzrLHBHXtFTAsP0vADtYjsKqtgd /EljZkKoYJN5BDXIpZNqdpz2yFwxLWTRLhI5QE0t9YDpevT6UIZxFjj863bgltZyKp 4qnCH7HegeOwO0rEV3FDvJ9fwdRCVBJD8AsA0q+eKB4PkS9ONx7aZpQUjYE8krRedC 0vnHGJofk0uPw== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:48 +0200 Subject: [PATCH mptcp-next v2 10/17] mptcp: pm: in-kernel: explicitly limit batches to array size 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: <20260410-mptcp-inc-limits-v2-10-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5699; i=matttbe@kernel.org; h=from:subject:message-id; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvct63mrx10oSCzs9xIev0MxP8+5XOCRys5T0Z4qt+f b3fOxGjjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIlUizIyzM+cKhb57L3oDQNV vnTWHZmflvQsnve0Ly3DwfZuJP/O7Qz/615khO10L52gYnzxrJvuMv8HpVvZM3MjE6xafTM5D2n yAgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The in-kernel PM can create subflows in reply to ADD_ADDR by batch of maximum 8 subflows for the moment. Same when adding new "subflow" endpoints with the fullmesh flag. This limit is linked to the arrays used during these steps. There was no explicit limit to the arrays size (8), because the limit of extra subflows is the same (8). It seems safer to use an explicit limit, but also these two sizes are going to be different in the next commit. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 7895fb5f982e..e9102c0f92f4 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -201,7 +201,8 @@ fill_remote_addr(struct mptcp_sock *msk, struct mptcp_a= ddr_info *local, static unsigned int fill_remote_addresses_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *local, - struct mptcp_addr_info *addrs) + struct mptcp_addr_info *addrs, + int addrs_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); bool deny_id0 =3D READ_ONCE(msk->pm.remote_deny_join_id0); @@ -236,7 +237,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D addrs_size) break; } =20 @@ -248,7 +250,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, */ static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *= local, - bool fullmesh, struct mptcp_addr_info *addrs) + bool fullmesh, struct mptcp_addr_info *addrs, + int addrs_size) { /* Non-fullmesh: fill in the single entry corresponding to the primary * MPC subflow remote address, and return 1, corresponding to 1 entry. @@ -257,7 +260,7 @@ fill_remote_addresses_vec(struct mptcp_sock *msk, struc= t mptcp_addr_info *local, return fill_remote_addr(msk, local, addrs); =20 /* Fullmesh endpoint: fill all possible remote addresses */ - return fill_remote_addresses_fullmesh(msk, local, addrs); + return fill_remote_addresses_fullmesh(msk, local, addrs, addrs_size); } =20 static struct mptcp_pm_addr_entry * @@ -407,7 +410,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) else /* local_addr_used is not decr for ID 0 */ msk->pm.local_addr_used++; =20 - nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, addrs); + nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, + addrs, ARRAY_SIZE(addrs)); if (nr =3D=3D 0) continue; =20 @@ -444,6 +448,7 @@ static unsigned int fill_local_addresses_vec_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *remote, struct mptcp_pm_local *locals, + int locals_size, bool c_flag_case) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); @@ -485,7 +490,8 @@ fill_local_addresses_vec_fullmesh(struct mptcp_sock *ms= k, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } rcu_read_unlock(); @@ -556,7 +562,8 @@ fill_local_laminar_endp(struct mptcp_sock *msk, struct = mptcp_addr_info *remote, static unsigned int fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, struct mptcp_addr_info *remote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, + int locals_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); @@ -583,7 +590,8 @@ fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } =20 @@ -617,13 +625,14 @@ fill_local_address_any(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, */ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *r= emote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, int locals_size) { bool c_flag_case =3D remote->id && mptcp_pm_add_addr_c_flag_case(msk); =20 /* If there is at least one MPTCP endpoint with a fullmesh flag */ if (mptcp_pm_get_endp_fullmesh_max(msk)) return fill_local_addresses_vec_fullmesh(msk, remote, locals, + locals_size, c_flag_case); =20 /* If there is at least one MPTCP endpoint with a laminar flag */ @@ -634,7 +643,8 @@ fill_local_addresses_vec(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, * limits are used -- accepting no ADD_ADDR -- and use subflow endpoints */ if (c_flag_case) - return fill_local_addresses_vec_c_flag(msk, remote, locals); + return fill_local_addresses_vec_c_flag(msk, remote, locals, + locals_size); =20 /* No special case: fill in the single 'IPADDRANY' local address */ return fill_local_address_any(msk, remote, &locals[0]); @@ -669,7 +679,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) /* connect to the specified remote address, using whatever * local address the routing configuration will pick. */ - nr =3D fill_local_addresses_vec(msk, &remote, locals); + nr =3D fill_local_addresses_vec(msk, &remote, locals, ARRAY_SIZE(locals)); if (nr =3D=3D 0) return; =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 C224630FC36 for ; Fri, 10 Apr 2026 14:32:15 +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=1775831535; cv=none; b=orrtPQMloK6X4YFpi2mJYFAq9h63KXgCukdxvSiO31twEJprKuggQ9ZPT1Bory3ShdIDQXl4BPSalIwnybCweZPhd3xXqi5sAV3Yhlgd+ZG6wod0PgtXm3OkvKOTUGCFLp3CpSuUuZmKA0Jmc91wIrT6NY6Z7Ysu0/CuUqmchYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831535; c=relaxed/simple; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ugGrdBRKOCn8PQGctO46j9H0LsccBlZO0bg7KG9UgAfEMEnnnjal6Q1RK1tm45fpn1X4sy4PzkJi+3Nedss7Dy7VpUB1Gjmh0R6zRQF9eBhxclyFxfVNPbH5AQrxusx8dQhIhLdnH/1ulGJijkAntZVD/Enu87DvD2Nl4rrW1Jk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=apSf5mI6; 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="apSf5mI6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2C77C2BCB1; Fri, 10 Apr 2026 14:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831535; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=apSf5mI6d+I2N9hMLnxXDEX/2GG76fXR2Io0WzUPx+UFVcBfzXZxglV2GJ+dhqMMa ZNFN5sIq9RN2JKO37AlTOFD7bGSBK47RJyp4PJdsr2gOSFRd46xGKJcZMU4MZtyoSk kdNRzNKpaWjD1nMoGbVJGP8aXWBIuEIqDt6EXAol31G6M2In/5XXNz+JR1blW27juo PDqqysrlYiAkl9diPfXb3Qcvtu/6UZmpplHy8h+kqsTerEusj+9h/Ep0PqAGYplleZ 2/rXN3asSYRvfIp08u//wNNzAyepZ4YOcVQR8vCM1svtP4RY64wjJkUoFoStprmtIn 83EgaSpyoPdKw== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:49 +0200 Subject: [PATCH mptcp-next v2 11/17] mptcp: pm: in-kernel: increase all limits to 64 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: <20260410-mptcp-inc-limits-v2-11-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1981; i=matttbe@kernel.org; h=from:subject:message-id; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj7cWNb7aCtjv1jXV6Ed19veSj2et37fbu+gF+/P/ XFc7DXtVUcpC4MYF4OsmCKLdFtk/sznVbwlXn4WMHNYmUCGMHBxCsBEvN8zMjy/3vPj+dndE5gf b1l2/Njbjniz6Z8dtRU8j8Wvk+veXxjP8D9hwQ2vP0b+NzY5HEx3L/b/2uWfKzQ/PInnta1tgU2 DIQ8A X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This means switching the maximum from 8 to 64 for the number of subflows and accepted ADD_ADDR. The previous limit of 8 subflows makes sense in most cases. Using more subflows will very likely *not* improve the situation, and could even decrease the performances. But there are no technical limitations nor performance impact to raise this limit, so let's do it: this will allow people with very specific use-cases, and researchers to easily create more subflows, and measure the performance impact by themselves. The theoretical limit is 255 -- the ID is written in a u8 on the wire -- but 64 is more than enough. With so many subflows, it will be costly to iterate over all of them when operations are done in bottom half. Note that the in-kernel PM will continue to create subflows in reply to ADD_ADDR by batch of maximum 8 subflows. Same when adding new "subflow" endpoints with the fullmesh flag. Increasing those batch limits would have a memory impact. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/434 Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index e9102c0f92f4..685bf2b9f9c2 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -30,6 +30,7 @@ struct pm_nl_pernet { }; =20 #define MPTCP_PM_ADDR_MAX 8 +#define MPTCP_PM_SUBFLOWS_MAX 64 =20 static struct pm_nl_pernet *pm_nl_get_pernet(const struct net *net) { @@ -1378,10 +1379,10 @@ static int parse_limit(struct genl_info *info, int = id, unsigned int *limit) return 0; =20 *limit =3D nla_get_u32(attr); - if (*limit > MPTCP_PM_ADDR_MAX) { + if (*limit > MPTCP_PM_SUBFLOWS_MAX) { NL_SET_ERR_MSG_ATTR_FMT(info->extack, attr, "limit greater than maximum (%u)", - MPTCP_PM_ADDR_MAX); + MPTCP_PM_SUBFLOWS_MAX); return -EINVAL; } return 0; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 3028430FC36 for ; Fri, 10 Apr 2026 14:32: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=1775831536; cv=none; b=n/6lTkDlSYIr9efCSRaJGBGyn28yVPBzR7wprqXfNRa2rBLUDG/8sXXa18e8+PNaBTGH6OCxXfkCIFM+OKDAQxCq7cp8fhSGJO/VVegpSaCCTDg+lKUDC/q1Dq3l8n/c4Puru5swj4VtszD1JtnR2caTFZ+5qOHPEoCJw/fn0WU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831536; c=relaxed/simple; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sNqPYjIjvp8tFWUBZ+rxZu9rPA5eiwcPNEM4Ispb6xWxcZsYeqRXddifdqWlWK0Lec1PGS0BbWQRpLRf+/dMwZEYfH0ku6natyFlqA5SLynHRThFVZ78LqrurpCPI6T+Th+OPP/f0NpGvndrbQn82LAdL7ticqZyOLpgjEO2GkY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QrYH49FQ; 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="QrYH49FQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A998BC2BC87; Fri, 10 Apr 2026 14:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831536; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QrYH49FQDOFXdTy/o3O/6YkCsz3BaJqT2gJ32MH6X/V2KhVGVPfNumv9JF68ZMZUy wxrzKNbSVrkq1ut/nyb7YroXB1W/F3LEjW5o5+W7yCTWDeSuWQFmpCyN/G2sugfOhW vkkmU/pmHbL3JH3EnyjynabCklkvPzAyiqmAnOXM667wLYYEMNu3K8MilP/ZaNo/Bq ygl3jpmb3deV3p0LQ8XzgOd/uYqN1zNmVDhmgJqQz4FGqojmvTSnzZ8G17eH4r6psS XsKJxbhRbLnvobZi6gQhtjO5AorqkOPyODgEC9/SXHNADKWU5sg+alaMULuPC6Ls3R TOiK1p+aIqPdA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:50 +0200 Subject: [PATCH mptcp-next v2 12/17] mptcp: pm: in-kernel: increase endpoints limit 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: <20260410-mptcp-inc-limits-v2-12-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=matttbe@kernel.org; h=from:subject:message-id; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj6S/Oz9fNevU/unvg1TOXNArPJ2W5npysx2Q+dT8 m0innxPOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZidprhr5RK80TLdfZ5b9Jb N6h7z/fZ8FR0VvfGXwJBwkdfJXOUfmVkuPFOSczEyulbQuamyK0Byj9ncq49tvPosx8PhApW9R5 awgQA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The endpoints are managed in a list which was limited to 8 entries. This limit can be too small in some cases: by having the same limit as the number of subflows, it might not allow creating all expected subflows when having a mix of v4 and v6 addresses that can all use MPTCP on v4/v6 only networks. While increasing the limit above the new subflows one, why not using the technical limit: 254. Indeed, the endpoint will each have an ID that will be used on the wire, limited to u8, and the ID 0 is reserved to the initial subflow. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 685bf2b9f9c2..ee92a9a127c3 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -743,7 +743,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_= nl_pernet *pernet, */ if (pernet->next_id =3D=3D MPTCP_PM_MAX_ADDR_ID) pernet->next_id =3D 1; - if (pernet->endpoints >=3D MPTCP_PM_ADDR_MAX) { + if (pernet->endpoints =3D=3D MPTCP_PM_MAX_ADDR_ID) { ret =3D -ERANGE; goto out; } --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 EAF2A393DE9 for ; Fri, 10 Apr 2026 14:32: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=1775831537; cv=none; b=iNm2lhn0e5BnIVIQSCGnskuBtzRh2XcY9LVoiJxKiC5WF94VHhKLTDUb0qcdusMMjRDHFbDX7PzImyIPasxST8RRktm4kr0IAYLFVrqOnmpClYex9KUClO50aF6b/0zZ0L0NfJ6ZJofkZNNxM9UGu/W3PZKsdVITyYJpsSq8dhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831537; c=relaxed/simple; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NxStkc0IudZy4kjMvPh8bagvuHyXflQ4YHk4uuCyvHUDxpQw6QOseCYwWr6JyFnFqbDeKVwmd9oIEAa+tGFsXi105TuCQfw3edEfBWO2UJDDhMuz7LAEiEGD6KgMD/T0Rz4BVgRRbtuQcBuLu6tgj2yJBVMWXvstyqA10yf1cU4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CYkqTF4M; 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="CYkqTF4M" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7066AC2BC87; Fri, 10 Apr 2026 14:32:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831536; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CYkqTF4ME3ivXRzhmDOAcdue/gyBvyv9jAIxegxFV96rlbRPxKD71sDlj/kOXClpH +L9i7bI5JZgtVFfM3SDbml+uPGZHlM9be0o9Oy+FPucLEidQJrWs+cZW6CaI0B4qmL OrrWaYVP93QCxvgi7hxk5fsTegoWFDZzHRdI2peiUy+J886D/hNmcUesKrx9xlNIZ/ EPeAaKJPPZINJNhOs1CUnxm89gJdS3KjcA8Qe2ngqfNEPG0vh8Duu21utxUBwU221D YoKy0h2Bodsd+uaoZKtaul3CHjPLdWNOuIVd7Ntwab1GxwtTbowWDucTol1bnm3nq7 PMjTrkNPMfTVA== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:51 +0200 Subject: [PATCH mptcp-next v2 13/17] selftests: mptcp: join: allow changing ifaces nr per test 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: <20260410-mptcp-inc-limits-v2-13-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1877; i=matttbe@kernel.org; h=from:subject:message-id; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj5WZ2SNMHeTUn0QtTL9FF/O39cLTesiHDe1hfJXF Ykbz37ZUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMJF1hQx/5T6pPf6i/HlKy6F4 tWNXZRvZzqqHTH+/+d+cqWEbBW8VrmH478zONfGdXeO8wEVHY97e5T9UlJhW+dhPz5Lb6r155s9 2VgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 By default, 4 network interfaces are created per subtest in a dedicated net namespace. Each netns has a dedicated pair of v4 and v6 addresses. Future tests will need more. Simply always creating more network interfaces per test will increase the execution time for all other tests, for no other benefits. So now it is possible to change this number only when needed, by setting ifaces_nr when calling 'reset', e.g. ifaces_nr=3D8 reset "Subtest title" Note that it might also be interesting to decrease the default value to 2 to reduce the setup time, especially when a debug kernel config is being used. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index beec41f6662a..28da9df797ae 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -63,6 +63,7 @@ unset fastclose unset fullmesh unset speed unset bind_addr +unset ifaces_nr unset join_syn_rej unset join_csum_ns1 unset join_csum_ns2 @@ -146,7 +147,7 @@ init_partial() # ns1eth4 ns2eth4 =20 local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$n= s2" ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad @@ -165,7 +166,7 @@ init_partial() init_shapers() { local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1ms tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1ms done --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 0906C3CC9F2 for ; Fri, 10 Apr 2026 14:32: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=1775831538; cv=none; b=lzIy0fwIG44kuApMcpMDb76tedVlHPlwWNjxakAveiOm7FOP6WDHCf5Ylu3alY6KDVyK8aS2s6Gp0WpmNd9s3E7qG6wfAM1yyJc8aedGV0JrXjEzJYO6DHS3M0UlZa2UMIwJAkEhEjxKiaWL6oyuj7Uos0t9n+/iVEBTwdhN5QQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831538; c=relaxed/simple; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F2SObZxj3Ej2Qbzwf8U3vkC+E3O2ktEKnZ3W95FiRQXSHAAhR7BJ3ZtASNgZsXy+FiZxqFK7sj9NR0Cz+uJ7RgKKk/r0z8ZXHT6DhXdEU4gQ38Wa0flNllbVGSfHtp3qu0OUzU5ePPHQF4uCQy8EBiDCy1QW2zhggFVmqrjPS2w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KpkbOMG8; 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="KpkbOMG8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 37CDCC2BCB1; Fri, 10 Apr 2026 14:32:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831537; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KpkbOMG87X2JwtVJw6aakD2q6NWc3aeHd7Z0qW3iuJpZ4OL9GJYjm43Q39aMlW2WZ gwezKlRJhoFklctHv9USRVsVtjmlvs31l7RmKRiSSOV/jZbMgIysi4MhZX6wvwGulN 7mxxxwOmxCwrJXNiU8DbYhlopCyKcyyTcdeECGcPDQQj/SIStSkuCtRgUaKqFRplY1 T7hMoOPnHuTGan9I5hKzAJ6zCT+XU0E8UMSMuXO3tSMv8x+zOSMhz8BwqBJSJV4szQ +MJjmDexvmOILkMoDyGt7kn/nxyzfJng5BJ6uo9DjsK/eq1eW0xJNYiPWgqw2+xrnG /nTE+kpwfPVdw== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:52 +0200 Subject: [PATCH mptcp-next v2 14/17] selftests: mptcp: join: validate 8x8 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: <20260410-mptcp-inc-limits-v2-14-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2161; i=matttbe@kernel.org; h=from:subject:message-id; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; b=kA0DAAoWfCLwwvNHCpcByyZiAGnZCeShfc2msN5l2PS68447zAYQSbHrmYZ2KG/nqmYsytk8v 4h1BAAWCgAdFiEEG4ZZb5nneg10Sk44fCLwwvNHCpcFAmnZCeQACgkQfCLwwvNHCpetjAD/VNku tXtk+64tuD0e9PNkX5PJeJU0h9m16osITDMny7ABAI6oTLOeSb72uLBnlq+y0ojjhvCkXF3htU9 qqCSBmJcE X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The limits have been recently increased, it is required to validate that having 64 subflows is allowed. Here, both the client and the server have 8 network interfaces. The server has 8 endpoints marked as 'signal' to announce all its v4 addresses. The client also has 8 endpoints, but marked as 'subflow' and 'fullmesh' in order to create 8 subflows to each address announced by the server. This means 63 additional subflows will be created after the initial one. If it is not possible to increase the limits to 64, it means an older kernel version is being used, and the test is skipped. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++++++++++++= ++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 28da9df797ae..8d6a9c031e0e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -513,6 +513,19 @@ reset_with_tcp_filter() fi } =20 +# For kernel supporting limits above 8 +# $1: title ; $2,4: addrs limit ns1,2 ; $3,5: subflows limit ns1,2 +reset_with_high_limits() +{ + reset "${1}" || return 1 + + if ! pm_nl_set_limits "${ns1}" "${2}" "${3}" 2>/dev/null || + ! pm_nl_set_limits "${ns2}" "${4}" "${5}" 2>/dev/null; then + mark_as_skipped "unable to set the limits to ${*:2}" + return 1 + fi +} + # $1: err msg fail_test() { @@ -3670,6 +3683,21 @@ fullmesh_tests() chk_prio_nr 0 1 1 0 chk_rm_nr 0 1 fi + + # fullmesh in 8x8 to create 63 additional subflows + if ifaces_nr=3D8 reset_with_high_limits "fullmesh 8x8" 64 64 64 64; then + # higher chance to loose ADD_ADDR: allow retransmissions + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 + local i + for i in $(seq 1 8); do + pm_nl_add_endpoint $ns2 10.0.$i.2 flags subflow,fullmesh + pm_nl_add_endpoint $ns1 10.0.$i.1 flags signal + done + speed=3Dslow \ + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 63 63 63 + fi + } =20 fastclose_tests() --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 79EA53D2FF5 for ; Fri, 10 Apr 2026 14:32: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=1775831538; cv=none; b=KGSH49oFHAKNj7CMzczxpplfbd1A8uViNYo6qX4/1bPy7p4s2bzx78EI5UcGPxvJibqscCf6SPdfXNZamiOYeMKrq1QH7hTtn8DRXuJP4py0m4SXRRKRfJp7R9eUYla673YP4YPXv6/dOLtKu8Trhlc6wNYMnyyN4S3V/5OYyM0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831538; c=relaxed/simple; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vFTV4TLRypGf7DgX8j2oqSUNi5qNMy+l5HJS1k5IcNU/0pc2YWLCNFS4AB0NcbbK7m1YZU07mpKUfSQ4xQR9ljf+cjxbtNRKoSHOD3Ak8/yqY8HVTQZ53kkVFFZSspWNZ7d8rgfW6TirTyQxFEa7YWcl+h+ktvxk/YtSaSTf4WY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kz7WfRgo; 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="kz7WfRgo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F290AC19421; Fri, 10 Apr 2026 14:32:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831538; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kz7WfRgo5r04OtqbpdPFY1P+/OegRuoB6IxOH4uZ848NLv0OiXkg8lAQDqGO3E+u5 lkDw2SWi92CpoWKDAneyxdLj0e8Dlz3+ligFTlPed9jJcUEIcrn6AkLHep8LQkLj/z lEo8Pn/gRALny1V0JcG2fekfKohGxbaAr3l3T4vYc0Z7qcOWrUrFi+CCytKg2fIost 1U5kIIzqcfksIKD2b7Y71K+lBEV1KypkXLN1PqhrHRTzy8fbo7kVBWrQExmdVrUTTx NbJBAa4aWM/XE3i6lTyIMKOhgKYzJCUNIOS6gdbnU/Dmy5y2FNU7BrNhajjIHoBCfM cx9hPCabimW4g== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:53 +0200 Subject: [PATCH mptcp-next v2 15/17] selftests: mptcp: pm: validate new limits 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: <20260410-mptcp-inc-limits-v2-15-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3660; i=matttbe@kernel.org; h=from:subject:message-id; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj4x/RXS+vyaxFn7roqwluzru5kNJ3DO5nntGpHQp hvc/Na5o5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCIMbowM89T7K9oual7jjff9 9tEkJO93Dn+NutyZJ5z7F+UweZRWMzK8aLP8vTN5T/+C7PnZ27fPtPs8f+7PeaFSHgHqG18vmGv GBgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 These limits have been recently updated, from 8 to: - 64 for the subflows and accepted add_addr - 255 for the MPTCP endpoints These modifications validate the new limits, but are also compatible with the previous ones, to be able to continue to validate stable kernel using the last version of the selftests. That's why new variables are now used instead of hard-coded values. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 52 +++++++++++++++------= ---- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index d844ee687a29..1ce5903c89c0 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -66,6 +66,15 @@ get_limits() { fi } =20 +get_limits_nb() { + if mptcp_lib_is_ip_mptcp; then + ip -n "${ns1}" mptcp limits | awk '{ print $2" "$4 }' + else + ip netns exec "${ns1}" ./pm_nl_ctl limits | \ + awk '{ printf "%s ", $2 }' + fi +} + format_endpoints() { mptcp_lib_pm_nl_format_endpoints "${@}" } @@ -162,6 +171,7 @@ check "get_endpoint 2" "" "simple del addr" check "show_endpoints" \ "$(format_endpoints "1,10.0.1.1" \ "3,10.0.1.3,signal backup")" "dump addrs after del" +add_endpoint 10.0.1.2 id 2 =20 add_endpoint 10.0.1.3 2>/dev/null check "get_endpoint 4" "" "duplicate addr" @@ -169,25 +179,25 @@ check "get_endpoint 4" "" "duplicate addr" add_endpoint 10.0.1.4 flags signal check "get_endpoint 4" "$(format_endpoints "4,10.0.1.4,signal")" "id addr = increment" =20 -for i in $(seq 5 9); do - add_endpoint "10.0.1.${i}" flags signal >/dev/null 2>&1 -done -check "get_endpoint 9" "$(format_endpoints "9,10.0.1.9,signal")" "hard add= r limit" -check "get_endpoint 10" "" "above hard addr limit" +read -r -a default_limits_nb <<< "$(get_limits_nb)" +# limits have been increased: from 8 to 64 for subflows/add_addr & 255 for= endp +if mptcp_lib_expect_all_features || set_limits 9 9 2>/dev/null; then + max_endp=3D255 + max_limits=3D64 +else + max_endp=3D8 + max_limits=3D8 +fi +set_limits "${default_limits_nb[@]}" =20 -del_endpoint 9 -for i in $(seq 10 255); do - add_endpoint 10.0.0.9 id "${i}" - del_endpoint "${i}" +for i in $(seq 5 ${max_endp}); do + add_endpoint "10.0.0.${i}" id "${i}" done -check "show_endpoints" \ - "$(format_endpoints "1,10.0.1.1" \ - "3,10.0.1.3,signal backup" \ - "4,10.0.1.4,signal" \ - "5,10.0.1.5,signal" \ - "6,10.0.1.6,signal" \ - "7,10.0.1.7,signal" \ - "8,10.0.1.8,signal")" "id limit" +check "get_endpoint ${max_endp}" \ + "$(format_endpoints "${max_endp},10.0.0.${max_endp}")" "id limit" + +check "add_endpoint '10.0.1.1' &>/dev/null && echo 'no error'" "" \ + "above hard addr limit" =20 flush_endpoint check "show_endpoints" "" "flush addrs" @@ -200,15 +210,15 @@ if ! mptcp_lib_is_ip_mptcp; then flush_endpoint fi =20 -set_limits 9 1 2>/dev/null +set_limits $((max_limits + 1)) 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" =20 -set_limits 1 9 2>/dev/null +set_limits 1 $((max_limits + 1)) 2>/dev/null check "get_limits" "${default_limits}" "subflows above hard limit" =20 -set_limits 8 8 +set_limits ${max_limits} ${max_limits} flush_endpoint ## to make sure it doesn't affect the limits -check "get_limits" "$(format_limits 8 8)" "set limits" +check "get_limits" "$(format_limits ${max_limits} ${max_limits})" "set lim= its" =20 flush_endpoint add_endpoint 10.0.1.1 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 401063D093F for ; Fri, 10 Apr 2026 14:32:19 +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=1775831539; cv=none; b=ezjUOgf9BDh7hLuRyC2dFKM+CTX+4DA5qEEM7Yox2vNAde+MjTvckNi8DuDW/tu5mu0TDVLE3v+VjakrgcsYYzV0rUYIAzDJQ+VRL53sRUbByb8cF4ZrnnvARYOQpIfhjyzObrQ/03R7kItqw0DY9rFCe+MJhRaiq9UXdj+9x0s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831539; c=relaxed/simple; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TREwAX6jXm4le02f80iNIF1eRjpasz/nISFSspe1uLflSa7A3TVgL17lNSeuzt3oyB8qjfPRWPmLeYVE1If5n+zU9aw0ldQ9q8oMyPe0CNiaxf0dsm7YAsbdgHGPEWpnzyeGsVrHSMr2hkXvKmhlkGRlvMrT3ZVmiOlIZxKZllM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bmhIV52l; 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="bmhIV52l" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9D73C2BC9E; Fri, 10 Apr 2026 14:32:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831539; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bmhIV52lhNYb8IX8wXNKxqeJHIRrcaYcZ72cldQkKhvbkDEAVyk/pkGhkbTHmwHYi My7NCq0I1cYZzYAgoj3zHaLAP08RmM8w1fj1hl6jpUUCb2j51Eq3fBgklVkEnA0bhc LPlmZjH8CFIc+wjEn72nvvfN7DiruMY/jTWEYYRfAvVxBCl2e7hSfcJJOb6SHVN+OP +Frxgnz8YKuIF96j0qsL6ffb5gaHDQ6FGDtbQ/atsVCHzeUvKet41zhjEdQL519yj0 QZL8JDvd5S2293wP0JuTTvMYOPcxWhJfMafv81Jm3jfIp2jChdaxLxreYwcuJsJ7l0 s5S3dgFLaMELw== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:54 +0200 Subject: [PATCH mptcp-next v2 16/17] selftests: mptcp: pm: use simpler send/recv forms 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: <20260410-mptcp-inc-limits-v2-16-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1778; i=matttbe@kernel.org; h=from:subject:message-id; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj4N9ryTO2+RR1bH6vDjUZFnE0/lL3kQUrs12HR9w dnnjPy/O0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZSVs/IcEBwhdNuX3Nu49Nt ERuWn9qj2vtVZ3tH3hW5fMV+9rvWSowMF3t6f3+9tlP11QqGw6fzYu0XH+foOzvt57kTeRPl1UT ecwIA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Instead of sendto() and recvfrom() which the NL address that was already provided before. Just simpler and easier to read without the to/from variants. While at it, fix a checkpatch warning by removing multiple assignments. Signed-off-by: Matthieu Baerts (NGI0) --- v2: fix already present checkpatch warning. --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 99eecccbf0c8..78180da1efcc 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -217,8 +217,6 @@ static int capture_events(int fd, int event_group) /* do a netlink command and, if max > 0, fetch the reply ; nh's size >1024= B */ static int do_nl_req(int fd, struct nlmsghdr *nh, int len, int max) { - struct sockaddr_nl nladdr =3D { .nl_family =3D AF_NETLINK }; - socklen_t addr_len; void *data =3D nh; int rem, ret; int err =3D 0; @@ -230,15 +228,15 @@ static int do_nl_req(int fd, struct nlmsghdr *nh, int= len, int max) } =20 nh->nlmsg_len =3D len; - ret =3D sendto(fd, data, len, 0, (void *)&nladdr, sizeof(nladdr)); + ret =3D send(fd, data, len, 0); if (ret !=3D len) error(1, errno, "send netlink: %uB !=3D %uB\n", ret, len); =20 - addr_len =3D sizeof(nladdr); - rem =3D ret =3D recvfrom(fd, data, max, 0, (void *)&nladdr, &addr_len); + ret =3D recv(fd, data, max, 0); if (ret < 0) error(1, errno, "recv netlink: %uB\n", ret); =20 + rem =3D ret; /* Beware: the NLMSG_NEXT macro updates the 'rem' argument */ for (; NLMSG_OK(nh, rem); nh =3D NLMSG_NEXT(nh, rem)) { if (nh->nlmsg_type =3D=3D NLMSG_DONE) --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 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 66935393DE9 for ; Fri, 10 Apr 2026 14:32: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=1775831540; cv=none; b=VoXiu/Blm4/Xg+v8wydbr2VFzxB9H3awW2QXrHUae7fiPamZ1QyxOBrvGh24JL28zBtDlkXGSceJEEDA3QfKnVY4NiPHnqjJxiWpZ29tUyvyB9oJp+yYjfOPte9UVV/mIbZeD/Wq7wv/hcMI1d8wqoFmgUpW4vl6rMCOWioGDAE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775831540; c=relaxed/simple; bh=vAsXZO9ae9kchstOr45ewf02nHFlzKA40VQo54RfclY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XssY4dFtLn6TF+tYSWmgdi+sRtrUQ7OKh6OUAx15ogIyap3m8KcfHqm22tLmjhIz/Dc3LFOWUCmfRTbHJw/vSRy28olCq1SPokgBQoJUYkY2gDRNqNE2p5EXARsN/4EVK5mJwes8iQJTRC9EesQClyy1ZwZj2K7GO2sYHr6eDCc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r4r4dMq0; 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="r4r4dMq0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 80800C2BC9E; Fri, 10 Apr 2026 14:32:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775831540; bh=vAsXZO9ae9kchstOr45ewf02nHFlzKA40VQo54RfclY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r4r4dMq0umd8VOyH6PM1c9sn2h3PWUPrpYA33OqHlS8FXq8gN0S1nXUpOBC9S0uet 6tHsDttwd39Yj9Q4t/hEH6c8BYBjL4IgqMKmyOJgEcqNzu6P+YPkEIT6Iza9pwInm1 Tow8prdvveFLn7w/74UQhCsAeqsm5AEdrP5aGsV3MmnI19/hehFYsLy9Cc9wzZD8XB fdfMLfklaw7crtsn/uPGqJfqN0p5WBmZPUM271Jum/E9lJJSbSqbIEpIp/msKChJO3 Y7fhbe+P83GPy6kcloRGaef+IRPmG8b93kUkUgGJLQ0w2BcdG+jA1fmCHTMfpg7yc/ AQLWGrevGrqJg== From: "Matthieu Baerts (NGI0)" Date: Fri, 10 Apr 2026 16:31:55 +0200 Subject: [PATCH mptcp-next v2 17/17] mptcp: pm: clearer ADD_ADDR related helpers names 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: <20260410-mptcp-inc-limits-v2-17-5402209f05d3@kernel.org> References: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> In-Reply-To: <20260410-mptcp-inc-limits-v2-0-5402209f05d3@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16299; i=matttbe@kernel.org; h=from:subject:message-id; bh=vAsXZO9ae9kchstOr45ewf02nHFlzKA40VQo54RfclY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvcj4Ls369fffic6ZTZkV2lPSxnr8Su/2xu5zFxjcmp /aleG5t7ihlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZhIyDJGhhNVrUVTXeuiFPUu e8zYrrqp6lJ85OPesBye+gyHirll6YwMCzcli86f7zSv+KZzM/OJ0ApmnnfTPD6wHFtmmiCf2Wn GDAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Here is a suggestion, and if it is OK, I will split this in multiple commits: it is not the first time the 'add' and 'anno' names to describe ADD_ADDR related functions are confusing. Eric already pointed that in [1]. I started by renaming only the internal helper names, then while at it, I tried to uniform everything linked to ADD_ADDR. WDYT? Link: https://lore.kernel.org/20251117100745.1913963-1-edumazet@google.com = [1] Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 126 ++++++++++++++++++++++++-------------------= ---- net/mptcp/pm_kernel.c | 20 ++++---- net/mptcp/pm_userspace.c | 6 +-- net/mptcp/protocol.h | 19 +++---- net/mptcp/subflow.c | 4 +- 6 files changed, 90 insertions(+), 87 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 4cc583fdc7a9..8282e666167d 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1211,7 +1211,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); - mptcp_pm_del_add_timer(msk, &mp_opt.addr, true); + mptcp_pm_add_addr_del_timer(msk, &mp_opt.addr, true); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD); } =20 diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index c7bf79a3d1da..203a7b42d458 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -12,11 +12,11 @@ =20 #define ADD_ADDR_RETRANS_MAX 3 =20 -struct mptcp_pm_add_entry { +struct mptcp_pm_add_addr { struct list_head list; struct mptcp_addr_info addr; u8 retrans_times; - struct timer_list add_timer; + struct timer_list timer; struct mptcp_sock *sock; struct rcu_head rcu; }; @@ -114,14 +114,14 @@ static bool mptcp_pm_is_init_remote_addr(struct mptcp= _sock *msk, return mptcp_addresses_equal(&mpc_remote, remote, remote->port); } =20 -bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, - const struct mptcp_addr_info *saddr) +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr) { struct mptcp_subflow_context *subflow; struct mptcp_addr_info cur; struct sock_common *skc; =20 - list_for_each_entry(subflow, list, node) { + mptcp_for_each_subflow(msk, subflow) { skc =3D (struct sock_common *)mptcp_subflow_tcp_sock(subflow); =20 mptcp_local_address(skc, &cur); @@ -132,38 +132,39 @@ bool mptcp_lookup_subflow_by_saddr(const struct list_= head *list, return false; } =20 -static struct mptcp_pm_add_entry * -mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +static struct mptcp_pm_add_addr * +mptcp_pm_add_addr_lookup_by_addr(const struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; =20 lockdep_assert_held(&msk->pm.lock); =20 - list_for_each_entry(entry, &msk->pm.anno_list, list) { - if (mptcp_addresses_equal(&entry->addr, addr, true)) - return entry; + list_for_each_entry(add_addr, &msk->pm.anno_list, list) { + if (mptcp_addresses_equal(&add_addr->addr, addr, true)) + return add_addr; } =20 return NULL; } =20 -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_pm_add_addr_remove(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; bool ret; =20 - entry =3D mptcp_pm_del_add_timer(msk, addr, false); - ret =3D entry; - kfree_rcu(entry, rcu); + add_addr =3D mptcp_pm_add_addr_del_timer(msk, addr, false); + ret =3D add_addr; + kfree_rcu(add_addr, rcu); =20 return ret; } =20 -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk) +bool mptcp_pm_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *entry; struct mptcp_addr_info saddr; bool ret =3D false; =20 @@ -334,11 +335,11 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) return max_stale && max_stale < rto ? max_stale : rto; } =20 -static void mptcp_pm_add_timer(struct timer_list *timer) +static void mptcp_pm_add_addr_timer(struct timer_list *timer) { - struct mptcp_pm_add_entry *entry =3D timer_container_of(entry, timer, - add_timer); - struct mptcp_sock *msk =3D entry->sock; + struct mptcp_pm_add_addr *add_addr =3D timer_container_of(add_addr, timer, + timer); + struct mptcp_sock *msk =3D add_addr->sock; struct sock *sk =3D (struct sock *)msk; unsigned int timeout; =20 @@ -366,19 +367,19 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) spin_lock_bh(&msk->pm.lock); =20 if (!mptcp_pm_should_add_signal_addr(msk)) { - pr_debug("retransmit ADD_ADDR id=3D%d\n", entry->addr.id); - mptcp_pm_announce_addr(msk, &entry->addr, false); + pr_debug("retransmit ADD_ADDR id=3D%d\n", add_addr->addr.id); + mptcp_pm_announce_addr(msk, &add_addr->addr, false); mptcp_pm_add_addr_send_ack(msk); - entry->retrans_times++; + add_addr->retrans_times++; } =20 - if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) + if (add_addr->retrans_times < ADD_ADDR_RETRANS_MAX) sk_reset_timer(sk, timer, - jiffies + (timeout << entry->retrans_times)); + jiffies + (timeout << add_addr->retrans_times)); =20 spin_unlock_bh(&msk->pm.lock); =20 - if (entry->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) + if (add_addr->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) mptcp_pm_subflow_established(msk); =20 out: @@ -387,76 +388,76 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) sock_put(sk); } =20 -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id) +struct mptcp_pm_add_addr * +mptcp_pm_add_addr_del_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; struct sock *sk =3D (struct sock *)msk; bool stop_timer =3D false; =20 rcu_read_lock(); =20 spin_lock_bh(&msk->pm.lock); - entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - if (entry && (!check_id || entry->addr.id =3D=3D addr->id)) { - entry->retrans_times =3D ADD_ADDR_RETRANS_MAX; + add_addr =3D mptcp_pm_add_addr_lookup_by_addr(msk, addr); + if (add_addr && (!check_id || add_addr->addr.id =3D=3D addr->id)) { + add_addr->retrans_times =3D ADD_ADDR_RETRANS_MAX; stop_timer =3D true; } - if (!check_id && entry) - list_del(&entry->list); + if (!check_id && add_addr) + list_del(&add_addr->list); spin_unlock_bh(&msk->pm.lock); =20 /* Note: entry might have been removed by another thread. * We hold rcu_read_lock() to ensure it is not freed under us. */ if (stop_timer) - sk_stop_timer_sync(sk, &entry->add_timer); + sk_stop_timer_sync(sk, &add_addr->timer); =20 rcu_read_unlock(); - return entry; + return add_addr; } =20 -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_pm_add_addr_alloc(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *add_entry =3D NULL; + struct mptcp_pm_add_addr *add_addr =3D NULL; struct sock *sk =3D (struct sock *)msk; unsigned int timeout; =20 lockdep_assert_held(&msk->pm.lock); =20 - add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - - if (add_entry) { + add_addr =3D mptcp_pm_add_addr_lookup_by_addr(msk, addr); + if (add_addr) { if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk))) return false; =20 goto reset_timer; } =20 - add_entry =3D kmalloc_obj(*add_entry, GFP_ATOMIC); - if (!add_entry) + add_addr =3D kmalloc_obj(*add_addr, GFP_ATOMIC); + if (!add_addr) return false; =20 - list_add(&add_entry->list, &msk->pm.anno_list); + list_add(&add_addr->list, &msk->pm.anno_list); =20 - add_entry->addr =3D *addr; - add_entry->sock =3D msk; - add_entry->retrans_times =3D 0; + add_addr->addr =3D *addr; + add_addr->sock =3D msk; + add_addr->retrans_times =3D 0; =20 - timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); + timer_setup(&add_addr->timer, mptcp_pm_add_addr_timer, 0); reset_timer: timeout =3D mptcp_adjust_add_addr_timeout(msk); if (timeout) - sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout); + sk_reset_timer(sk, &add_addr->timer, + jiffies + timeout); =20 return true; } =20 -static void mptcp_pm_free_anno_list(struct mptcp_sock *msk) +static void mptcp_pm_free_add_addr_list(struct mptcp_sock *msk) { - struct mptcp_pm_add_entry *entry, *tmp; + struct mptcp_pm_add_addr *add_addr, *tmp; struct sock *sk =3D (struct sock *)msk; LIST_HEAD(free_list); =20 @@ -466,9 +467,9 @@ static void mptcp_pm_free_anno_list(struct mptcp_sock *= msk) list_splice_init(&msk->pm.anno_list, &free_list); spin_unlock_bh(&msk->pm.lock); =20 - list_for_each_entry_safe(entry, tmp, &free_list, list) { - sk_stop_timer_sync(sk, &entry->add_timer); - kfree_rcu(entry, rcu); + list_for_each_entry_safe(add_addr, tmp, &free_list, list) { + sk_stop_timer_sync(sk, &add_addr->timer); + kfree_rcu(add_addr, rcu); } } =20 @@ -722,7 +723,8 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pend= ing)) + if (mptcp_pm_add_addr_lookup_by_addr(msk, addr) && + READ_ONCE(pm->work_pending)) mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED); =20 spin_unlock_bh(&pm->lock); @@ -1091,7 +1093,7 @@ static void mptcp_pm_ops_release(struct mptcp_sock *m= sk) =20 void mptcp_pm_destroy(struct mptcp_sock *msk) { - mptcp_pm_free_anno_list(msk); + mptcp_pm_free_add_addr_list(msk); mptcp_pm_ops_release(msk); } =20 diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index ee92a9a127c3..99026ae0173f 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -367,7 +367,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) /* 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)) + if (!mptcp_pm_add_addr_alloc(msk, &local.addr)) return; =20 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); @@ -1051,16 +1051,16 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, = struct genl_info *info) return ret; } =20 -static void mptcp_pm_remove_anno_addr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, - bool force) +static void mptcp_pm_remove_add_addr(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, + bool force) { struct mptcp_rm_list list =3D { .nr =3D 0 }; bool announced; =20 list.ids[list.nr++] =3D mptcp_endp_get_local_id(msk, addr); =20 - announced =3D mptcp_remove_anno_list_by_saddr(msk, addr); + announced =3D mptcp_pm_add_addr_remove(msk, addr); if (announced || force) { spin_lock_bh(&msk->pm.lock); if (announced) @@ -1096,9 +1096,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, goto next; =20 lock_sock(sk); - remove_subflow =3D mptcp_lookup_subflow_by_saddr(&msk->conn_list, addr); - mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && - !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); + remove_subflow =3D mptcp_pm_subflow_lookup_by_saddr(msk, addr); + mptcp_pm_remove_add_addr(msk, addr, remove_subflow && + !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); =20 list.ids[0] =3D mptcp_endp_get_local_id(msk, addr); =20 @@ -1228,11 +1228,11 @@ static void mptcp_pm_flush_addrs_and_subflows(struc= t mptcp_sock *msk, =20 list_for_each_entry(entry, rm_list, list) { if (slist.nr < MPTCP_RM_IDS_MAX && - mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) slist.ids[slist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 if (alist.nr < MPTCP_RM_IDS_MAX && - mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + mptcp_pm_add_addr_remove(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); } =20 diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index d838e8ea65fd..704154de85ca 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -228,7 +228,7 @@ int mptcp_pm_nl_announce_doit(struct sk_buff *skb, stru= ct genl_info *info) lock_sock(sk); spin_lock_bh(&msk->pm.lock); =20 - if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { + if (mptcp_pm_add_addr_alloc(msk, &addr_val.addr)) { msk->pm.add_addr_signaled++; mptcp_pm_announce_addr(msk, &addr_val.addr, false); mptcp_pm_addr_send_ack(msk); @@ -281,9 +281,9 @@ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, int anno_nr =3D 0; =20 /* only delete if either announced or matching a subflow */ - if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_pm_add_addr_remove(msk, &entry->addr)) anno_nr++; - else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + else if (!mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) return; =20 alist.ids[alist.nr++] =3D entry->addr.id; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 661600f8b573..8ad60edf3419 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1132,16 +1132,17 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *ms= k, struct mptcp_addr_info *addr, struct mptcp_addr_info *rem, u8 bkup); -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, +bool mptcp_pm_add_addr_alloc(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr); +struct mptcp_pm_add_addr * +mptcp_pm_add_addr_del_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id); +bool mptcp_pm_add_addr_remove(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk); -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id); -bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, - const struct mptcp_addr_info *saddr); -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr); +bool mptcp_pm_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk); +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr); int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry *local, struct genl_info *info); int mptcp_userspace_pm_set_flags(struct mptcp_pm_addr_entry *local, diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index e2cb9d23e4a0..836dcdc3a620 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -235,7 +235,7 @@ static int subflow_check_req(struct request_sock *req, pr_debug("syn inet_sport=3D%d %d\n", ntohs(inet_sk(sk_listener)->inet_sport), ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) { + if (!mptcp_pm_add_addr_lookup_by_sk(subflow_req->msk, sk_listener)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTSYNRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); return -EPERM; @@ -926,7 +926,7 @@ static struct sock *subflow_syn_recv_sock(const struct = sock *sk, pr_debug("ack inet_sport=3D%d %d\n", ntohs(inet_sk(sk)->inet_sport), ntohs(inet_sk((struct sock *)owner)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(owner, sk)) { + if (!mptcp_pm_add_addr_lookup_by_sk(owner, sk)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTACKRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); goto dispose_child; --=20 2.53.0