@@ -1295,6 +1295,7 @@ static int mptcp_nl_cmd_flush_addrs(struct sk_buff *skb, struct genl_info *info)
__reset_counters(pernet);
pernet->next_id = 1;
bitmap_zero(pernet->id_bitmap, MAX_ADDR_ID + 1);
+ __set_bit(MAX_ADDR_ID, pernet->id_bitmap);
spin_unlock_bh(&pernet->lock);
mptcp_nl_remove_addrs_list(sock_net(skb->sk), &free_list);
@@ -1881,6 +1882,7 @@ static int __net_init pm_nl_init_net(struct net *net)
__reset_counters(pernet);
pernet->next_id = 1;
bitmap_zero(pernet->id_bitmap, MAX_ADDR_ID + 1);
+ __set_bit(MAX_ADDR_ID, pernet->id_bitmap);
spin_lock_init(&pernet->lock);
return 0;
}
Reserve the MAX_ADDR_ID assignment in the address IDs bitmap, leave it to mark the end of valid IDs in the removing addresses array. Signed-off-by: Geliang Tang <geliangtang@gmail.com> --- net/mptcp/pm_netlink.c | 2 ++ 1 file changed, 2 insertions(+)