Skip to content

Commit ef7a65b

Browse files
matttbegregkh
authored andcommitted
mptcp: pm: re-using ID of unused flushed subflows
commit ef34a6e upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 0273b55 commit ef7a65b

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)