commit: e4ff21ff5a7c7b31bb0b352ce21cc66a9db973be Author: Mike Pagano <mpagano <AT> gentoo <DOT> org> AuthorDate: Wed May 25 13:09:20 2022 +0000 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org> CommitDate: Wed May 25 13:09:20 2022 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=e4ff21ff
Linux patch 5.17.11 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org> 0000_README | 4 +++ 1010_linux-5.17.11.patch | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/0000_README b/0000_README index fcdbf704..8aed7c53 100644 --- a/0000_README +++ b/0000_README @@ -83,6 +83,10 @@ Patch: 1009_linux-5.17.10.patch From: http://www.kernel.org Desc: Linux 5.17.10 +Patch: 1010_linux-5.17.11.patch +From: http://www.kernel.org +Desc: Linux 5.17.11 + Patch: 1500_XATTR_USER_PREFIX.patch From: https://bugs.gentoo.org/show_bug.cgi?id=470644 Desc: Support for namespace user.pax.* on tmpfs. diff --git a/1010_linux-5.17.11.patch b/1010_linux-5.17.11.patch new file mode 100644 index 00000000..a85749fe --- /dev/null +++ b/1010_linux-5.17.11.patch @@ -0,0 +1,76 @@ +diff --git a/Makefile b/Makefile +index 318597a4147e0..b821f270a4ca6 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + VERSION = 5 + PATCHLEVEL = 17 +-SUBLEVEL = 10 ++SUBLEVEL = 11 + EXTRAVERSION = + NAME = Superb Owl + +diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h +index aec767ee047ab..46b343a0b17ea 100644 +--- a/net/mptcp/protocol.h ++++ b/net/mptcp/protocol.h +@@ -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; +diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c +index 651f01d13191e..8d5ddf8e3ef71 100644 +--- a/net/mptcp/subflow.c ++++ b/net/mptcp/subflow.c +@@ -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 @@ fallback: + 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 + */
