linux-stable/net/mptcp
Paolo Abeni 3267a06109 mptcp: fix data stream corruption
commit 29249eac52 upstream.

Maxim reported several issues when forcing a TCP transparent proxy
to use the MPTCP protocol for the inbound connections. He also
provided a clean reproducer.

The problem boils down to 'mptcp_frag_can_collapse_to()' assuming
that only MPTCP will use the given page_frag.

If others - e.g. the plain TCP protocol - allocate page fragments,
we can end-up re-using already allocated memory for mptcp_data_frag.

Fix the issue ensuring that the to-be-expanded data fragment is
located at the current page frag end.

v1 -> v2:
 - added missing fixes tag (Mat)

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/178
Reported-and-tested-by: Maxim Galaganov <max@internet.ru>
Fixes: 18b683bff8 ("mptcp: queue data for mptcp level retransmission")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-03 09:00:39 +02:00
..
crypto.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-08-05 20:13:21 -07:00
crypto_test.c mptcp: move crypto test to KUNIT 2020-06-26 16:21:39 -07:00
ctrl.c mptcp: enable JOIN requests even if cookies are in use 2020-07-31 16:55:32 -07:00
diag.c mptcp: allow dumping subflow context to userspace 2020-03-29 22:14:48 -07:00
Kconfig mptcp: depends on IPV6 but not as a module 2020-10-21 08:05:40 -07:00
Makefile mptcp: enable JOIN requests even if cookies are in use 2020-07-31 16:55:32 -07:00
mib.c mptcp: print new line in mptcp_seq_show() if mptcp isn't in use 2020-12-07 17:45:29 -08:00
mib.h mptcp: add RM_ADDR related mibs 2020-09-24 19:58:34 -07:00
mptcp_diag.c mptcp: add MPTCP socket diag interface 2020-07-09 12:38:41 -07:00
options.c mptcp: drop unconditional pr_warn on bad opt 2021-06-03 09:00:39 +02:00
pm.c mptcp: ADD_ADDRs with echo bit are smaller 2020-10-03 17:36:37 -07:00
pm_netlink.c mptcp: Constify mptcp_pm_ops 2020-10-04 21:13:36 -07:00
protocol.c mptcp: fix data stream corruption 2021-06-03 09:00:39 +02:00
protocol.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-10-15 12:43:21 -07:00
subflow.c mptcp: avoid error message on infinite mapping 2021-06-03 09:00:39 +02:00
syncookies.c mptcp: fix syncookie build error on UP 2020-08-01 11:52:55 -07:00
token.c mptcp: token: fix unititialized variable 2020-11-03 13:08:30 -08:00
token_test.c mptcp: introduce token KUNIT self-tests 2020-06-26 16:21:39 -07:00