Linux 5.17.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.17.11 kernel.
All users of the 5.17 kernel series must upgrade.
The updated 5.17.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.17.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +- net/mptcp/protocol.h | 3 ++- net/mptcp/subflow.c | 21 ++++++++++++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-)
Greg Kroah-Hartman (1):
Linux 5.17.11
Mat Martineau (1):
mptcp: Do TCP fallback on early DSS checksum failure
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 17 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = NAME = Superb Owl
net/mptcp/protocol.h +2 -1
@@ -442,7 +442,8 @@ struct mptcp_subflow_context { rx_eof : 1, can_ack : 1, /* only after processing the remote a key */ disposable : 1, /* ctx can be free at ulp release time */ - stale : 1; /* unable to snd/rcv data, do not use for xmit */ + stale : 1, /* unable to snd/rcv data, do not use for xmit */ + valid_csum_seen : 1; /* at least one csum validated */enum mptcp_data_avail data_avail;u32 remote_nonce;u64 thmac;
net/mptcp/subflow.c +18 -3
@@ -913,11 +913,14 @@ static enum mapping_status validate_data_csum(struct sock *ssk, struct sk_buff * subflow->map_data_csum);if (unlikely (csum)) {MPTCP_INC_STATS (sock_net (ssk),MPTCP_MIB_DATACSUMERR ); - subflow->send_mp_fail =1 ; -MPTCP_INC_STATS (sock_net (ssk),MPTCP_MIB_MPFAILTX ); +if (subflow->mp_join || subflow->valid_csum_seen) { + subflow->send_mp_fail =1 ; +MPTCP_INC_STATS (sock_net (ssk),MPTCP_MIB_MPFAILTX ); + }return subflow->mp_join ?MAPPING_INVALID :MAPPING_DUMMY ; } + subflow->valid_csum_seen =1 ;return MAPPING_OK ; }
@@ -1099,6 +1102,18 @@ static void subflow_sched_work_if_closed(struct mptcp_sock *msk, struct sock *ss } } +static bool subflow_can_fallback (struct mptcp_subflow_context *subflow) +{ +struct mptcp_sock *msk =mptcp_sk (subflow->conn); + +if (subflow->mp_join) +return false; +else if (READ_ONCE (msk->csum_enabled)) +return !subflow->valid_csum_seen; +else +return !subflow->fully_established; +} +static bool subflow_check_data_avail (struct sock *ssk) {struct mptcp_subflow_context *subflow =mptcp_subflow_ctx (ssk);
@@ -1176,7 +1191,7 @@ static bool subflow_check_data_avail(struct sock *ssk)return true; } -if (subflow->mp_join || subflow->fully_established) { +if (!subflow_can_fallback (subflow)) {/* fatal protocol error, close the socket. * subflow_error_report() will introduce the appropriate barriers */