[PATCH mptcp-net] mptcp: add validity check for sending RM_ADDR

Geliang Tang posted 1 patch 5 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/02d38d6b7a98765bf516c90541d4f2a911f428ce.1699014584.git.geliang.tang@suse.com
Maintainers: Matthieu Baerts <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Geliang Tang <geliang.tang@suse.com>
net/mptcp/pm_netlink.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH mptcp-net] mptcp: add validity check for sending RM_ADDR
Posted by Geliang Tang 5 months, 3 weeks ago
This patch adds the validity check for sending RM_ADDRs for userspace PM
in mptcp_pm_remove_addrs(), only send a RM_ADDR when the address is in the
anno_list or conn_list.

Fixes: 8b1c94da1e48 ("mptcp: only send RM_ADDR in nl_cmd_remove")
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm_netlink.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 1529ec358815..bf4d96f6f99a 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1515,8 +1515,9 @@ void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list)
 	struct mptcp_pm_addr_entry *entry;
 
 	list_for_each_entry(entry, rm_list, list) {
-		remove_anno_list_by_saddr(msk, &entry->addr);
-		if (alist.nr < MPTCP_RM_IDS_MAX)
+		if ((remove_anno_list_by_saddr(msk, &entry->addr) ||
+		     lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) &&
+		    alist.nr < MPTCP_RM_IDS_MAX)
 			alist.ids[alist.nr++] = entry->addr.id;
 	}
 
-- 
2.35.3
Re: [PATCH mptcp-net] mptcp: add validity check for sending RM_ADDR
Posted by Matthieu Baerts 5 months, 3 weeks ago
Hi Geliang, Mat,

On 03/11/2023 13:31, Geliang Tang wrote:
> This patch adds the validity check for sending RM_ADDRs for userspace PM
> in mptcp_pm_remove_addrs(), only send a RM_ADDR when the address is in the
> anno_list or conn_list.

Thank you for the patch and the review!

Now in our tree (fixes for -net) with Mat's RvB tag:

New patches for t/upstream-net and t/upstream:
- 1df4971eb5ab: mptcp: add validity check for sending RM_ADDR
- Results: 4ce71da6e4a0..688025cbce11 (export-net)
- Results: 8f6ba7dc0295..15e4d31937fc (export)

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export-net/20231107T212152
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20231107T212152

Cheers,
Matt
Re: [PATCH mptcp-net] mptcp: add validity check for sending RM_ADDR
Posted by Mat Martineau 5 months, 3 weeks ago
On Fri, 3 Nov 2023, Geliang Tang wrote:

> This patch adds the validity check for sending RM_ADDRs for userspace PM
> in mptcp_pm_remove_addrs(), only send a RM_ADDR when the address is in the
> anno_list or conn_list.
>
> Fixes: 8b1c94da1e48 ("mptcp: only send RM_ADDR in nl_cmd_remove")
> Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> ---
> net/mptcp/pm_netlink.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
> index 1529ec358815..bf4d96f6f99a 100644
> --- a/net/mptcp/pm_netlink.c
> +++ b/net/mptcp/pm_netlink.c
> @@ -1515,8 +1515,9 @@ void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list)
> 	struct mptcp_pm_addr_entry *entry;
>
> 	list_for_each_entry(entry, rm_list, list) {
> -		remove_anno_list_by_saddr(msk, &entry->addr);
> -		if (alist.nr < MPTCP_RM_IDS_MAX)
> +		if ((remove_anno_list_by_saddr(msk, &entry->addr) ||
> +		     lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) &&
> +		    alist.nr < MPTCP_RM_IDS_MAX)
> 			alist.ids[alist.nr++] = entry->addr.id;
> 	}

Looks good to me, thanks Geliang.

Reviewed-by: Mat Martineau <martineau@kernel.org>