diff options
author | Paolo Abeni <pabeni@redhat.com> | 2022-05-12 16:26:41 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-05-13 17:04:30 -0700 |
commit | 95d686517884a403412b000361cee2b08b2ed1e6 (patch) | |
tree | 3cedfc5c31871fc58581ca09618d1b71ee8cf5c8 /net/mptcp/pm.c | |
parent | 04c494e68a1340cb5c70d4704ac32d863dc64293 (diff) | |
download | lwn-95d686517884a403412b000361cee2b08b2ed1e6.tar.gz lwn-95d686517884a403412b000361cee2b08b2ed1e6.zip |
mptcp: fix subflow accounting on close
If the PM closes a fully established MPJ subflow or the subflow
creation errors out in it's early stage the subflows counter is
not bumped accordingly.
This change adds the missing accounting, additionally taking care
of updating accordingly the 'accept_subflow' flag.
Fixes: a88c9e496937 ("mptcp: do not block subflows creation on errors")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/mptcp/pm.c')
-rw-r--r-- | net/mptcp/pm.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 01809eef29b4..aa51b100e033 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -178,14 +178,13 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock *ssk, struct mptcp_pm_data *pm = &msk->pm; bool update_subflows; - update_subflows = (ssk->sk_state == TCP_CLOSE) && - (subflow->request_join || subflow->mp_join); + update_subflows = subflow->request_join || subflow->mp_join; if (!READ_ONCE(pm->work_pending) && !update_subflows) return; spin_lock_bh(&pm->lock); if (update_subflows) - pm->subflows--; + __mptcp_pm_close_subflow(msk); /* Even if this subflow is not really established, tell the PM to try * to pick the next ones, if possible. |