linux-stable/net/mptcp
Paolo Abeni b46021ab83 mptcp: consolidate fallback and non fallback state machine
commit 81c1d02901 upstream.

An orphaned msk releases the used resources via the worker,
when the latter first see the msk in CLOSED status.

If the msk status transitions to TCP_CLOSE in the release callback
invoked by the worker's final release_sock(), such instance of the
workqueue will not take any action.

Additionally the MPTCP code prevents scheduling the worker once the
socket reaches the CLOSE status: such msk resources will be leaked.

The only code path that can trigger the above scenario is the
__mptcp_check_send_data_fin() in fallback mode.

Address the issue removing the special handling of fallback socket
in __mptcp_check_send_data_fin(), consolidating the state machine
for fallback and non fallback socket.

Since non-fallback sockets do not send and do not receive data_fin,
the mptcp code can update the msk internal status to match the next
step in the SM every time data fin (ack) should be generated or
received.

As a consequence we can remove a bunch of checks for fallback from
the fastpath.

Fixes: 6e628cd3a8 ("mptcp: use mptcp release_cb for delayed tasks")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-07-05 18:25:04 +01:00
..
crypto.c kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
crypto_test.c
ctrl.c mptcp: faster active backup recovery 2021-08-14 11:37:25 +01:00
diag.c
Kconfig kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
Makefile kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
mib.c mptcp: add mibs counter for ignored incoming options 2022-03-02 11:47:53 +01:00
mib.h mptcp: add mibs counter for ignored incoming options 2022-03-02 11:47:53 +01:00
mptcp_diag.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00
options.c mptcp: use mptcp_schedule_work instead of open-coding it 2023-04-20 12:13:56 +02:00
pm.c mptcp: add mibs counter for ignored incoming options 2022-03-02 11:47:53 +01:00
pm_netlink.c mptcp: fix lockdep false positive in mptcp_pm_nl_create_listen_socket() 2023-03-22 13:31:35 +01:00
protocol.c mptcp: consolidate fallback and non fallback state machine 2023-07-05 18:25:04 +01:00
protocol.h mptcp: Do TCP fallback on early DSS checksum failure 2022-05-25 14:42:07 +02:00
sockopt.c mptcp: remove tcp ulp setsockopt support 2021-12-22 09:32:43 +01:00
subflow.c mptcp: consolidate fallback and non fallback state machine 2023-07-05 18:25:04 +01:00
syncookies.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00
token.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00
token_test.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00