mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 18:05:21 +02:00
mptcp: pm: re-using ID of unused flushed subflows
commitef34a6ea0c
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:06faa22710
("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>
This commit is contained in:
parent
7b64bdbfcf
commit
257d56fbff
|
@ -1654,8 +1654,15 @@ void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
|
||||||
mptcp_pm_remove_addr(msk, &alist);
|
mptcp_pm_remove_addr(msk, &alist);
|
||||||
spin_unlock_bh(&msk->pm.lock);
|
spin_unlock_bh(&msk->pm.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slist.nr)
|
if (slist.nr)
|
||||||
mptcp_pm_remove_subflow(msk, &slist);
|
mptcp_pm_remove_subflow(msk, &slist);
|
||||||
|
|
||||||
|
/* Reset counters: maybe some subflows have been removed before */
|
||||||
|
spin_lock_bh(&msk->pm.lock);
|
||||||
|
bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
|
||||||
|
msk->pm.local_addr_used = 0;
|
||||||
|
spin_unlock_bh(&msk->pm.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mptcp_nl_remove_addrs_list(struct net *net,
|
static void mptcp_nl_remove_addrs_list(struct net *net,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user