[net,0/6] mptcp: fixes for 6.4

Message ID 20230620-upstream-net-20230620-misc-fixes-for-v6-4-v1-0-f36aa5eae8b9@tessares.net
Headers
Series mptcp: fixes for 6.4 |

Message

Matthieu Baerts June 20, 2023, 4:24 p.m. UTC
  Patch 1 correctly handles disconnect() failures that can happen in some
specific cases: now the socket state is set as unconnected as expected.
That fixes an issue introduced in v6.2.

Patch 2 fixes a divide by zero bug in mptcp_recvmsg() with a fix similar
to a recent one from Eric Dumazet for TCP introducing sk_wait_pending
flag. It should address an issue present in MPTCP from almost the
beginning, from v5.9.

Patch 3 fixes a possible list corruption on passive MPJ even if the race
seems very unlikely, better be safe than sorry. The possible issue is
present from v5.17.

Patch 4 consolidates fallback and non fallback state machines to avoid
leaking some MPTCP sockets. The fix is likely needed for versions from
v5.11.

Patch 5 drops code that is no longer used after the introduction of
patch 4/6. This is not really a fix but this patch can probably land in
the -net tree as well not to leave unused code.

Patch 6 ensures listeners are unhashed before updating their sk status
to avoid possible deadlocks when diag info are going to be retrieved
with a lock. Even if it should not be visible with the way we are
currently getting diag info, the issue is present from v5.17.

Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
---
Paolo Abeni (6):
      mptcp: handle correctly disconnect() failures
      mptcp: fix possible divide by zero in recvmsg()
      mptcp: fix possible list corruption on passive MPJ
      mptcp: consolidate fallback and non fallback state machine
      mptcp: drop legacy code around RX EOF
      mptcp: ensure listener is unhashed before updating the sk status

 net/mptcp/pm_netlink.c |   1 +
 net/mptcp/protocol.c   | 160 ++++++++++++++++++++-----------------------------
 net/mptcp/protocol.h   |   5 +-
 net/mptcp/subflow.c    |  17 +++---
 4 files changed, 76 insertions(+), 107 deletions(-)
---
base-commit: 9a43827e876c9a071826cc81783aa2222b020f1d
change-id: 20230620-upstream-net-20230620-misc-fixes-for-v6-4-55ef43802324

Best regards,
  

Comments

patchwork-bot+netdevbpf@kernel.org June 22, 2023, 5:50 a.m. UTC | #1
Hello:

This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 20 Jun 2023 18:24:17 +0200 you wrote:
> Patch 1 correctly handles disconnect() failures that can happen in some
> specific cases: now the socket state is set as unconnected as expected.
> That fixes an issue introduced in v6.2.
> 
> Patch 2 fixes a divide by zero bug in mptcp_recvmsg() with a fix similar
> to a recent one from Eric Dumazet for TCP introducing sk_wait_pending
> flag. It should address an issue present in MPTCP from almost the
> beginning, from v5.9.
> 
> [...]

Here is the summary with links:
  - [net,1/6] mptcp: handle correctly disconnect() failures
    https://git.kernel.org/netdev/net/c/c2b2ae3925b6
  - [net,2/6] mptcp: fix possible divide by zero in recvmsg()
    https://git.kernel.org/netdev/net/c/0ad529d9fd2b
  - [net,3/6] mptcp: fix possible list corruption on passive MPJ
    https://git.kernel.org/netdev/net/c/56a666c48b03
  - [net,4/6] mptcp: consolidate fallback and non fallback state machine
    https://git.kernel.org/netdev/net/c/81c1d0290160
  - [net,5/6] mptcp: drop legacy code around RX EOF
    https://git.kernel.org/netdev/net/c/b7535cfed223
  - [net,6/6] mptcp: ensure listener is unhashed before updating the sk status
    https://git.kernel.org/netdev/net/c/57fc0f1ceaa4

You are awesome, thank you!