mptcp: remove a list of addrs when flushing
authorGeliang Tang <geliangtang@gmail.com>
Sat, 13 Mar 2021 01:16:18 +0000 (17:16 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Mar 2021 01:47:45 +0000 (17:47 -0800)
This patch invoked mptcp_nl_remove_addrs_list to remove a list of addresses
when the netlink flushes addresses, instead of using
mptcp_nl_remove_subflow_and_signal_addr to remove them one by one.

And dropped the unused parameter net in __flush_addrs too.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/pm_netlink.c

index a5f6ab9..5857b82 100644 (file)
@@ -1248,14 +1248,13 @@ static void mptcp_nl_remove_addrs_list(struct net *net,
        }
 }
 
-static void __flush_addrs(struct net *net, struct list_head *list)
+static void __flush_addrs(struct list_head *list)
 {
        while (!list_empty(list)) {
                struct mptcp_pm_addr_entry *cur;
 
                cur = list_entry(list->next,
                                 struct mptcp_pm_addr_entry, list);
-               mptcp_nl_remove_subflow_and_signal_addr(net, &cur->addr);
                list_del_rcu(&cur->list);
                mptcp_pm_free_addr_entry(cur);
        }
@@ -1280,7 +1279,8 @@ static int mptcp_nl_cmd_flush_addrs(struct sk_buff *skb, struct genl_info *info)
        pernet->next_id = 1;
        bitmap_zero(pernet->id_bitmap, MAX_ADDR_ID + 1);
        spin_unlock_bh(&pernet->lock);
-       __flush_addrs(sock_net(skb->sk), &free_list);
+       mptcp_nl_remove_addrs_list(sock_net(skb->sk), &free_list);
+       __flush_addrs(&free_list);
        return 0;
 }
 
@@ -1877,7 +1877,7 @@ static void __net_exit pm_nl_exit_net(struct list_head *net_list)
                /* net is removed from namespace list, can't race with
                 * other modifiers
                 */
-               __flush_addrs(net, &pernet->local_addr_list);
+               __flush_addrs(&pernet->local_addr_list);
        }
 }