Hi Paolo,
On 09/07/2025 17:12, Paolo Abeni wrote:
> This series contains 3 fixes somewhat related to various races we have
> while handling fallback and 2 small follow-up likely more suited for
> net-next.
>
> The root cause of the issues addressed here is that the check for
> "we can fallback to tcp now" and the related action are not atomic. That
> also applies to fallback due to MP_FAIL - where the window race is even
> wider.
>
> Address the issue introducing an additional spinlock to bundle together
> all the relevant events, as per patch 1 and 2.
>
> Note that mptcp_disconnect() unconditionally
> clears the fallback status (zeroing msk->flags) but don't tuch the
> `allows_infinite_fallback` flag. Such issue is addressed in patch 3.
>
> Patch 4 cleans up a bit the fallback code, introducing specific MIB for
> each FB reason, and patch 5 drops the, hopefully now redundant
> pr_fallback().
> ---
> v2 -> v3:
> - mptcp_do_fallback -> mptcp_try_fallback
> - refactored patch 3/5
> - changed mibs names, increment fail only when the protocol mandate it
> - fix W=1 warn in patch 5/5
Thank you for the new version!
It looks good to me, I just a few small questions, not really blocking
the series, and I can eventually do the small modifications when
applying the patches if you prefer.
>
> Paolo Abeni (5):
> mptcp: make fallback action and fallback decision atomic
> mptcp: plug races between subflow fail and subflow creation
> mptcp: reset fallback status gracefully at disconnect() time
> mptcp: track fallbacks accurately via mibs
> mptcp: remove pr_fallback()
>
> net/mptcp/ctrl.c | 4 +-
> net/mptcp/mib.c | 5 +++
> net/mptcp/mib.h | 7 ++++
> net/mptcp/options.c | 6 ++-
> net/mptcp/pm.c | 8 +++-
> net/mptcp/protocol.c | 97 ++++++++++++++++++++++++++++++++++----------
> net/mptcp/protocol.h | 35 ++++++++--------
> net/mptcp/subflow.c | 40 ++++++++++--------
> 8 files changed, 140 insertions(+), 62 deletions(-)
>
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.