OpenCloudOS-Kernel/net/mptcp
Paolo Abeni 1ea7b252b4 mptcp: fix duplicate subflow creation
commit 045e9d812868a2d80b7a57b224ce8009444b7bbc upstream.

Fullmesh endpoints could end-up unexpectedly generating duplicate
subflows - same local and remote addresses - when multiple incoming
ADD_ADDR are processed before the PM creates the subflow for the local
endpoints.

Address the issue explicitly checking for duplicates at subflow
creation time.

To avoid a quadratic computational complexity, track the unavailable
remote address ids in a temporary bitmap and initialize such bitmap
with the remote ids of all the existing subflows matching the local
address currently processed.

The above allows additionally replacing the existing code checking
for duplicate entry in the current set with a simple bit test
operation.

Fixes: 2843ff6f36 ("mptcp: remote addresses fullmesh")
Cc: stable@vger.kernel.org
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/435
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-03-01 13:35:03 +01:00
..
Kconfig kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
Makefile mptcp: add struct mptcp_sched_ops 2023-08-22 17:31:18 -07:00
bpf.c bpf: Add update_socket_protocol hook 2023-08-16 10:22:16 -07:00
crypto.c kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
crypto_test.c mptcp: move crypto test to KUNIT 2020-06-26 16:21:39 -07:00
ctrl.c sysctl-6.6-rc1 2023-08-29 17:39:15 -07:00
diag.c mptcp: fix data races on local_id 2024-03-01 13:35:03 +01:00
fastopen.c mptcp: corner case locking for rx path fields initialization 2024-03-01 13:34:57 +01:00
mib.c mptcp: add CurrEstab MIB counter support 2024-03-01 13:34:57 +01:00
mib.h mptcp: add CurrEstab MIB counter support 2024-03-01 13:34:57 +01:00
mptcp_diag.c tcp: Access &tcp_hashinfo via net. 2022-09-20 10:21:49 -07:00
options.c mptcp: corner case locking for rx path fields initialization 2024-03-01 13:34:57 +01:00
pm.c mptcp: drop last_snd and MPTCP_RESET_SCHEDULER 2023-08-22 17:31:18 -07:00
pm_netlink.c mptcp: fix duplicate subflow creation 2024-03-01 13:35:03 +01:00
pm_userspace.c mptcp: add needs_id for userspace appending addr 2024-03-01 13:35:02 +01:00
protocol.c mptcp: fix data races on local_id 2024-03-01 13:35:03 +01:00
protocol.h mptcp: fix data races on local_id 2024-03-01 13:35:03 +01:00
sched.c mptcp: register default scheduler 2023-08-22 17:31:19 -07:00
sockopt.c mptcp: refactor sndbuf auto-tuning 2024-01-05 15:19:41 +01:00
subflow.c mptcp: fix data races on remote_id 2024-03-01 13:35:03 +01:00
syncookies.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00
token.c mptcp: add statistics for mptcp socket in use 2023-01-09 07:30:50 +00:00
token_test.c mptcp: init sk->sk_prot in build_msk() 2023-01-09 07:30:50 +00:00