Skip to content

Commit ef34a6e

Browse files
matttbekuba-moo
authored andcommitted
mptcp: pm: re-using ID of unused flushed subflows
If no subflows are attached to the 'subflow' endpoints that are being flushed, the corresponding addr IDs will not be marked as available again. Mark all ID as being available when flushing all the 'subflow' endpoints, and reset local_addr_used counter to cover these cases. Note that mptcp_pm_remove_addrs_and_subflows() helper is only called for flushing operations, not to remove a specific set of addresses and subflows. Fixes: 06faa22 ("mptcp: remove multi addresses and subflows in PM") Cc: stable@vger.kernel.org Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-5-38035d40de5b@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 65fb58a commit ef34a6e

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

net/mptcp/pm_netlink.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,8 +1623,15 @@ static void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
16231623
mptcp_pm_remove_addr(msk, &alist);
16241624
spin_unlock_bh(&msk->pm.lock);
16251625
}
1626+
16261627
if (slist.nr)
16271628
mptcp_pm_remove_subflow(msk, &slist);
1629+
1630+
/* Reset counters: maybe some subflows have been removed before */
1631+
spin_lock_bh(&msk->pm.lock);
1632+
bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
1633+
msk->pm.local_addr_used = 0;
1634+
spin_unlock_bh(&msk->pm.lock);
16281635
}
16291636

16301637
static void mptcp_nl_remove_addrs_list(struct net *net,

0 commit comments

Comments
 (0)