From nobody Sun Jul 5 05:52:28 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 9141E2F8E8E for ; Fri, 26 Jun 2026 07:16:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458190; cv=none; b=CAcOTg9oL3yrGD+gUkTUhxDyk6NH3KSCzMQFoHgcHrB1ZrKiXaKQc3gvCBgzlWqauwtXZqLupI1BgwjjA5LXeCix+dcVF8laUTmnnJQWbM0rThcnh5g91A3nGb4S5rQrrUgd84+jyKqzToMlEyZOm08gyTlfo5zoieFe69kYeqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458190; c=relaxed/simple; bh=kJACSEWu7WrCR7/aUsj0mlsOAlB4qUDb5nzIaJ0PPt4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J/KSBcaNHiPUhGnfVJEuJ63GQw7JgQ4Z8gmPZNPv2JR3mgfyZWzjZmWP7eoagb7f+XxPOeFLRvhZyaSqkc8rZqReErstcJS7QDkR0VqteivQLSTPDZOSv3VZ6fUEa7CRdQSUXCFb2W2D/EaVmegm5jDcPDl1VXo59g/PARHgmB4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oUhbOf10; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oUhbOf10" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9ACAB1F00A3D; Fri, 26 Jun 2026 07:16:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782458189; bh=T+NvHeUcISPl13KIV1vBD0DEtiMRJjo9GbNJtF2igaE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=oUhbOf10Bs052l9+bA62MmnIsxhp6sO1K5SbQ5+i9VS4z4fL82J9N7Cd0Btws/Rlb 7x0Bj1mTqwip05R4ux4tmEw0fq0V9YI5VrBiIqrkc4h7VCOs8fXBHzrxZaG3dKfK5m /JZE7Ms60AsjHLPknbZveOWetLHUazsHyblociNkbLQm4409aq70BHisEgwlgYPZH+ MWXjfNmUN7IMCl8Fp8QXwCBNmhVA6Otao3rAvgrDvie2Rgb2CpGCh4rBJd2ekd2DaE wzSAQHirw3tC9X0inV5YxeLvTA+Mn/UiPU4BPqI+31VrbRW8cb2EjS3DV2TMh4tNFr Wyy6JHzRTbAFg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , "Matthieu Baerts (NGI0)" Subject: [PATCH mptcp-next v5 1/3] mptcp: pm: userspace: drop delete_local_addr helper Date: Fri, 26 Jun 2026 15:16:16 +0800 Message-ID: <79e3304ab18efa6a714839d7ca19e45708934120.1782457962.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Address entries should not be removed from local_addr_list when a subflow is deleted by the userspace PM, should only be removed when sending a REMOVE_ADDR. So mptcp_userspace_pm_delete_local_addr() helper shouldn't be called in mptcp_pm_nl_subflow_create_doit() and mptcp_pm_nl_subflow_destroy_doit(). Since this helper is open-coding in mptcp_pm_nl_remove_doit(), it can be dropped now. Address entries are removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, the local_addr_used counter of PM should also be decremented accordingly. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/403 Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Geliang Tang --- net/mptcp/pm_userspace.c | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index ad6ba658e5a5..45463f2f1e60 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -90,30 +90,6 @@ static int mptcp_userspace_pm_append_new_local_addr(stru= ct mptcp_sock *msk, return ret; } =20 -/* If the subflow is closed from the other peer (not via a - * subflow destroy command then), we want to keep the entry - * not to assign the same ID to another address and to be - * able to send RM_ADDR after the removal of the subflow. - */ -static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk, - struct mptcp_pm_addr_entry *addr) -{ - struct sock *sk =3D (struct sock *)msk; - struct mptcp_pm_addr_entry *entry; - - entry =3D mptcp_userspace_pm_lookup_addr(msk, &addr->addr); - if (!entry) - return -EINVAL; - - /* TODO: a refcount is needed because the entry can - * be used multiple times (e.g. fullmesh mode). - */ - list_del_rcu(&entry->list); - sock_kfree_s(sk, entry, sizeof(*entry)); - msk->pm.local_addr_used--; - return 0; -} - static struct mptcp_pm_addr_entry * mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int = id) { @@ -331,6 +307,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct= genl_info *info) } =20 list_del_rcu(&match->list); + msk->pm.local_addr_used--; spin_unlock_bh(&msk->pm.lock); =20 mptcp_pm_remove_addr_entry(msk, match); @@ -416,14 +393,9 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *sk= b, struct genl_info *info) err =3D __mptcp_subflow_connect(sk, &local, &addr_r); release_sock(sk); =20 - if (err) { + if (err) GENL_SET_ERR_MSG_FMT(info, "connect error: %d", err); =20 - spin_lock_bh(&msk->pm.lock); - mptcp_userspace_pm_delete_local_addr(msk, &entry); - spin_unlock_bh(&msk->pm.lock); - } - create_err: sock_put(sk); return err; @@ -540,9 +512,6 @@ int mptcp_pm_nl_subflow_destroy_doit(struct sk_buff *sk= b, struct genl_info *info goto release_sock; } =20 - spin_lock_bh(&msk->pm.lock); - mptcp_userspace_pm_delete_local_addr(msk, &addr_l); - spin_unlock_bh(&msk->pm.lock); mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN); mptcp_close_ssk(sk, ssk, mptcp_subflow_ctx(ssk)); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW); --=20 2.53.0 From nobody Sun Jul 5 05:52:28 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 2CE063BCD38 for ; Fri, 26 Jun 2026 07:16:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458193; cv=none; b=PK2OZl1GrhyHEJROIG1TNsqp5lIh/f7M0WkL6yRo48ljStqj6QP6MBUVABOC49I2jULrnPIWX6dyW42Rt8AWhVmkpXq+KDSuzGxQ4rFh88cOelWDedW/Rjqf4kVMZPyL0nAurPrQI/cGMUWqYJ5M2/e+3HM6g65iOhn1tDwzSqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458193; c=relaxed/simple; bh=A55sq2edNjZboEYvRjmz1w8Hi7awVEJszg3Hm3RWqN4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tEq9WMk0crM4rCUE4hwsiLaTDzY1nykHE9Ng68SZ2m5kATk8lX8+LuWFWJzIaPgJTjH7wcS5kfVKaEBVdw0yzefcwWAvMTGzixf6SVZ446s5ljw2CaArSOVhuuYBlXmC2gDbHE58mrjtZOAHzImGyVpFoIh38y37jdhQgt36XZQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QogO61z7; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QogO61z7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F88F1F000E9; Fri, 26 Jun 2026 07:16:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782458191; bh=KowOka6LBWeuRshCNI0XQ7D8AwApQokRL2Xpia17PAk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=QogO61z7iOMD0KZsJWclcbT5+VKlIMDnjT+FFNM6ir4KeQCs0Zwoq9oZMkaRnfLHn OuLwdVhhltvgCA9PGqpMEhVlZbFUQbyQsakOIYPQHOFWT+TJoSBuMR3jnSKaLbh5Hd EFxqmzUU/QSbhH0fOYKHwH9N0kwuCodmmvnPKBM6lLS8K2hj4vyJYgmNk0Yv3n4mhW 2KERiX+P3u1Q34yT2/e2RtDxbO+9JCzwg81DRPTEL7OizDX05GdERpc7vZJaVcYW90 Q/BinjNCNVif+pmWixt/mUYsmGp5b4ojEkJIrb7mWPLmQHxnQ7RVh/IbZ7dufr3nHJ PjdsR6xWoVZ1w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , "Matthieu Baerts (NGI0)" Subject: [PATCH mptcp-next v5 2/3] selftests: mptcp: join: update userspace dump_addr outputs Date: Fri, 26 Jun 2026 15:16:17 +0800 Message-ID: <00a48ea4c0e2ccb4254312e2cf01553e0e601b6f.1782457962.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Now address entries only be removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, they're no longer removed when a subflow is deleted. To make userspace PM selftests in mptcp_join.sh pass, this patch updates the outputs of dump_addr. Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 550a6b6117a9..e1cdde5ba722 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -4089,9 +4089,9 @@ userspace_tests() userspace_pm_chk_get_addr "${ns1}" "20" "id 20 flags signal 10.0.3.1" userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $MPTCP_LIB_EVENT_SUB_ESTABLISH= ED userspace_pm_chk_dump_addr "${ns1}" \ - "id 20 flags signal 10.0.3.1" "after rm_sf 10" + $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' "after rm_s= f 10" userspace_pm_rm_addr $ns1 20 - userspace_pm_chk_dump_addr "${ns1}" "" "after rm_addr 20" + userspace_pm_chk_dump_addr "${ns1}" "id 10 flags signal 10.0.2.1" "after= rm_addr 20" chk_rm_nr 1 1 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -4119,7 +4119,7 @@ userspace_tests() userspace_pm_chk_get_addr "${ns2}" "20" "id 20 flags subflow 10.0.3.2" userspace_pm_rm_sf $ns2 10.0.3.2 $MPTCP_LIB_EVENT_SUB_ESTABLISHED userspace_pm_chk_dump_addr "${ns2}" \ - "" \ + "id 20 flags subflow 10.0.3.2" \ "after rm_sf 20" chk_rm_nr 0 1 chk_mptcp_info subflows 0 subflows 0 --=20 2.53.0 From nobody Sun Jul 5 05:52:28 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 759802F8E8E for ; Fri, 26 Jun 2026 07:16:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458195; cv=none; b=HJFzdw0FreXz5QVzsHkypxxdkf+RSscjXf2mzVmWR8ibftYSK8mJkfTZRTlUnDa1HN6jpsP7pOpcGbebehxLaKyrs/9q8gSo/L9iualgO5725/nUiFigOla63KbbaV5FosGfITeCXtbt34IF0B445NFu7Tgkj0La1zUHKmuMgOY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782458195; c=relaxed/simple; bh=RmCjhSaYNUO5tzmFTUtFswKYJ/N6E1dETYD33uC7WxY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hHXI/cr0as6q3RD0DmcZA1guPMf9m37LWheM69xze56fxOSaPFMR9jM3wek5cAAtJkZs7n+I9VDt2hYXwYrrZLYyEYLQtYPs08MiiBnWpzHs7+henSMRk/7pYv7lmH/xNwjxIUlgbYuFEJB86pT1bawz/5X7a0qtpfkAzRvsmPU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FK69Ri2p; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FK69Ri2p" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A5B5C1F00A3A; Fri, 26 Jun 2026 07:16:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782458194; bh=7fs8QjxTki/YzECO2GuouXWjshIqqMtfZTWwUjhWwwM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=FK69Ri2pK/lrPVtqiUiyAubmGMXII8K9s9U1vfMQSMt1TGgxiPKlUgCyLWNuRQ9cD 2TeveNyda0oPQ1LvPtGQv6TYi6cyV+krWxhtYhTuziKHhmHVK3d+w/dew/oxFHDR3M KFb7ERUHMCAuH/J2ueMnOr31OBMXGGBcCZVgBv0uFJNKVfXMZNDzRY828GVYfw7zad zcnDDssmTyjgpWhxs26w89XhHpphCtPaBulZhmVNFmNAcS4AoqFRNgOYfwQ8sgJl3A 4NzbG9YuTQeb223zDG19h/MlW1jVAIIZSSGy3VuUK/y6ipeC+YpFaW1hvHNW4MGeag G5+C8/8ftUGPQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , "Matthieu Baerts (NGI0)" Subject: [PATCH mptcp-next v5 3/3] selftests: mptcp: userspace: send RM_ADDR between server and client Date: Fri, 26 Jun 2026 15:16:18 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Now address entries only be removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, they're no longer removed when a subflow is deleted. To make the original userspace PM selftests pass, this patch sends RM_ADDR from server to client machine at the end of each test, and always sends RM_ADDR from client to server machine to cleanup address IDs for the next new test. Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/userspace_pm.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index e9ae1806ab07..3e7e2a633448 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -608,6 +608,10 @@ test_subflows() "$client4_token" sleep 0.5 =20 + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id 23 token "$server4_token" + sleep 0.5 + # Attempt to add a listener at dead:beef:2::2: ip netns exec "$ns2" ./pm_nl_ctl listen dead:beef:2::2\ "$client6_port" & @@ -642,6 +646,8 @@ test_subflows() "dead:beef:2::1" "dead:beef:2::2" "$client6_port" "23"\ "$client_addr_id" "ns1" "ns2" =20 + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id 23 token "$server6_token" # RM_ADDR from client to server machine ip netns exec "$ns2" ./pm_nl_ctl rem id $client_addr_id token\ "$client6_token" @@ -680,6 +686,8 @@ test_subflows() verify_subflow_events "$server_evts" "$SUB_CLOSED" "$server4_token" "$AF_= INET" "10.0.2.1"\ "10.0.2.2" "$new4_port" "23" "$client_addr_id" "ns1" "ns2" =20 + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id 23 token "$server4_token" # RM_ADDR from client to server machine ip netns exec "$ns2" ./pm_nl_ctl rem id $client_addr_id token\ "$client4_token" @@ -721,6 +729,8 @@ test_subflows() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server4_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client4_token" sleep 0.5 =20 # Attempt to add a listener at dead:beef:2::1: @@ -760,6 +770,8 @@ test_subflows() # RM_ADDR6 from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server6_token" + # RM_ADDR6 from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client6_token" sleep 0.5 =20 # Attempt to add a listener at 10.0.2.1: @@ -797,6 +809,8 @@ test_subflows() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server4_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client4_token" } =20 test_subflows_v4_v6_mix() @@ -844,6 +858,8 @@ test_subflows_v4_v6_mix() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server6_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client6_token" sleep 0.5 } =20 --=20 2.53.0