linux/net/mptcp
Paolo Abeni 045e9d8128 mptcp: fix duplicate subflow creation
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>
2024-02-18 10:25:00 +00:00
..
bpf.c bpf: Add update_socket_protocol hook 2023-08-16 10:22:16 -07:00
crypto_test.c mptcp: fill in missing MODULE_DESCRIPTION() 2023-12-17 20:54:22 +00:00
crypto.c kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
ctrl.c mptcp: add a new sysctl for make after break timeout 2023-10-25 12:23:33 -07:00
diag.c mptcp: fix data races on local_id 2024-02-18 10:25:00 +00:00
fastopen.c mptcp: corner case locking for rx path fields initialization 2024-02-12 10:08:13 +00:00
Kconfig kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
Makefile net: mptcp: use policy generated by YAML spec 2023-10-24 13:00:32 -07:00
mib.c mptcp: add CurrEstab MIB counter support 2024-01-02 13:32:45 +00:00
mib.h mptcp: add CurrEstab MIB counter support 2024-01-02 13:32:45 +00:00
mptcp_diag.c net: fill in MODULE_DESCRIPTION()s for SOCK_DIAG modules 2023-11-19 20:09:13 +00:00
mptcp_pm_gen.c netlink: specs: mptcp: rename the MPTCP path management spec 2023-12-15 12:17:16 +00:00
mptcp_pm_gen.h netlink: specs: mptcp: rename the MPTCP path management spec 2023-12-15 12:17:16 +00:00
options.c mptcp: corner case locking for rx path fields initialization 2024-02-12 10:08:13 +00:00
pm_netlink.c mptcp: fix duplicate subflow creation 2024-02-18 10:25:00 +00:00
pm_userspace.c mptcp: fix data races on local_id 2024-02-18 10:25:00 +00:00
pm.c mptcp: drop useless ssk in pm_subflow_check_next 2023-10-27 08:47:30 -07:00
protocol.c mptcp: fix data races on local_id 2024-02-18 10:25:00 +00:00
protocol.h mptcp: fix data races on local_id 2024-02-18 10:25:00 +00:00
sched.c mptcp: register default scheduler 2023-08-22 17:31:19 -07:00
sockopt.c mptcp: sockopt: support IP_LOCAL_PORT_RANGE and IP_BIND_ADDRESS_NO_PORT 2023-12-26 22:33:21 +00:00
subflow.c mptcp: fix data races on remote_id 2024-02-18 10:25:00 +00:00
syncookies.c mptcp: don't return sockets in foreign netns 2021-09-24 10:51:36 +01:00
token_test.c mptcp: fill in missing MODULE_DESCRIPTION() 2023-12-17 20:54:22 +00:00
token.c mptcp: add statistics for mptcp socket in use 2023-01-09 07:30:50 +00:00