From: Geliang Tang <geliangt...@gmail.com>

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 <geliangt...@gmail.com>
Signed-off-by: Mat Martineau <mathew.j.martin...@linux.intel.com>
---
 net/mptcp/pm_netlink.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index a5f6ab96a1b4..5857b82c88bf 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -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);
        }
 }
 
-- 
2.30.2

Reply via email to