Skip to content

Commit 1bba3f2

Browse files
Paolo Abenikuba-moo
authored andcommitted
mptcp: do not fallback when OoO is present
In case of DSS corruption, the MPTCP protocol tries to avoid the subflow reset if fallback is possible. Such corruptions happen in the receive path; to ensure fallback is possible the stack additionally needs to check for OoO data, otherwise the fallback will break the data stream. Fixes: e32d262 ("mptcp: handle consistently DSS corruption") Cc: stable@vger.kernel.org Closes: multipath-tcp/mptcp_net-next#598 Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-4-806d3781c95f@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 17393fa commit 1bba3f2

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

net/mptcp/protocol.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ bool __mptcp_try_fallback(struct mptcp_sock *msk, int fb_mib)
7676
if (__mptcp_check_fallback(msk))
7777
return true;
7878

79+
/* The caller possibly is not holding the msk socket lock, but
80+
* in the fallback case only the current subflow is touching
81+
* the OoO queue.
82+
*/
83+
if (!RB_EMPTY_ROOT(&msk->out_of_order_queue))
84+
return false;
85+
7986
spin_lock_bh(&msk->fallback_lock);
8087
if (!msk->allow_infinite_fallback) {
8188
spin_unlock_bh(&msk->fallback_lock);

0 commit comments

Comments
 (0)