linux/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_test.c
crypto.c
ctrl.c
diag.c
Kconfig
Makefile
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_diag.c
options.c mptcp: drop unconditional pr_warn on bad opt 2021-06-03 09:00:39 +02:00
pm_netlink.c
pm.c
protocol.c mptcp: fix data stream corruption 2021-06-03 09:00:39 +02:00
protocol.h
subflow.c mptcp: avoid error message on infinite mapping 2021-06-03 09:00:39 +02:00
syncookies.c
token_test.c
token.c