]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mptcp: pm: use for_each_subflow helper
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Fri, 5 Jun 2026 09:21:53 +0000 (19:21 +1000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 11 Jun 2026 22:33:38 +0000 (15:33 -0700)
Similar to most places in the MPTCP code. So instead of passing the
subflow list and use list_for_each_entry(subflow, list, node), pass the
msk and use mptcp_for_each_subflow(msk, subflow).

That's clearer and more uniform with the rest.

While at it, add 'pm_' prefix for the exported one to easily identify
the origin. Plus replace 'lookup' by 'has', because a bool is returned.

Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260605-net-next-mptcp-add-addr6-port-ts-v2-9-758e7ca73f4d@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/pm.c
net/mptcp/pm_kernel.c
net/mptcp/pm_userspace.c
net/mptcp/protocol.h

index ac7de4141738f347fd5463bfeed4480640fcb96a..09fb64954351ff56104766aad56a162c7997d184 100644 (file)
@@ -115,14 +115,14 @@ static bool mptcp_pm_is_init_remote_addr(struct mptcp_sock *msk,
        return mptcp_addresses_equal(&mpc_remote, remote, remote->port);
 }
 
-bool mptcp_lookup_subflow_by_saddr(const struct list_head *list,
-                                  const struct mptcp_addr_info *saddr)
+bool mptcp_pm_has_subflow_saddr(const struct mptcp_sock *msk,
+                               const struct mptcp_addr_info *saddr)
 {
        struct mptcp_subflow_context *subflow;
        struct mptcp_addr_info cur;
        struct sock_common *skc;
 
-       list_for_each_entry(subflow, list, node) {
+       mptcp_for_each_subflow(msk, subflow) {
                skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow);
 
                mptcp_local_address(skc, &cur);
index 4ba4346d7adc7c962a0bcaf31e25cbe396abd467..484f99a9c5b2c2e85593d72ce4343def628cfefe 100644 (file)
@@ -96,13 +96,13 @@ u8 mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk)
 }
 EXPORT_SYMBOL_GPL(mptcp_pm_get_limit_extra_subflows);
 
-static bool lookup_subflow_by_daddr(const struct list_head *list,
-                                   const struct mptcp_addr_info *daddr)
+static bool has_subflow_daddr(const struct mptcp_sock *msk,
+                             const struct mptcp_addr_info *daddr)
 {
        struct mptcp_subflow_context *subflow;
        struct mptcp_addr_info cur;
 
-       list_for_each_entry(subflow, list, node) {
+       mptcp_for_each_subflow(msk, subflow) {
                struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
 
                if (!((1 << inet_sk_state_load(ssk)) &
@@ -673,7 +673,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk)
        mptcp_pm_addr_send_ack(msk);
        mptcp_mpc_endpoint_setup(msk);
 
-       if (lookup_subflow_by_daddr(&msk->conn_list, &remote))
+       if (has_subflow_daddr(msk, &remote))
                return;
 
        /* pick id 0 port, if none is provided the remote address */
@@ -1098,7 +1098,7 @@ static int mptcp_nl_remove_subflow_and_signal_addr(struct net *net,
                        goto next;
 
                lock_sock(sk);
-               remove_subflow = mptcp_lookup_subflow_by_saddr(&msk->conn_list, addr);
+               remove_subflow = mptcp_pm_has_subflow_saddr(msk, addr);
                mptcp_pm_remove_anno_addr(msk, addr, remove_subflow &&
                                          !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT));
 
@@ -1236,7 +1236,7 @@ again:
 
        entry = list_prepare_entry(entry, rm_list, list);
        list_for_each_entry_continue(entry, rm_list, list) {
-               if (mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr))
+               if (mptcp_pm_has_subflow_saddr(msk, &entry->addr))
                        slist.ids[slist.nr++] = mptcp_endp_get_local_id(msk, &entry->addr);
 
                if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr))
index 0d3a95e676f17d0b0587372997525b0b327e5c19..b2b74a339d88391ba1f664875de5b950b21468c6 100644 (file)
@@ -283,7 +283,7 @@ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk,
        /* only delete if either announced or matching a subflow */
        if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr))
                anno_nr++;
-       else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr))
+       else if (!mptcp_pm_has_subflow_saddr(msk, &entry->addr))
                return;
 
        alist.ids[alist.nr++] = entry->addr.id;
index e69fcb4d48af6567107eeb87e28a5434ce2a9e47..62d37d5c63f4d961a68c408919cf38ccc6e87ff7 100644 (file)
@@ -1136,8 +1136,8 @@ 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_pm_has_subflow_saddr(const struct mptcp_sock *msk,
+                               const struct mptcp_addr_info *saddr);
 bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk,
                                     const struct mptcp_addr_info *addr);
 int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry *local,