FAILED: patch "[PATCH] mptcp: introduce MAPPING_BAD_CSUM" failed to apply to 5.15-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 31bf11de146c3f8892093ff39f8f9b3069d6a852 Mon Sep 17 00:00:00 2001
From: Paolo Abeni <[email protected]>
Date: Mon, 27 Jun 2022 18:02:36 -0700
Subject: [PATCH] mptcp: introduce MAPPING_BAD_CSUM
This allow moving a couple of conditional out of the fast path, making the code more easy to follow and will simplify the next patch.
Fixes ae66fb2ba6c3 ("mptcp: Do TCP fallback on early DSS checksum failure")
Signed-off-by Paolo Abeni <[email protected]>
Signed-off-by Mat Martineau <[email protected]>
Signed-off-by Jakub Kicinski <[email protected]>
net/mptcp/subflow.c +9 -9
@@ -843,7 +843,8 @@ enum mapping_status {MAPPING_INVALID ,MAPPING_EMPTY ,MAPPING_DATA_FIN , - MAPPING_DUMMY +MAPPING_DUMMY , + MAPPING_BAD_CSUM };static void dbg_bad_map (struct mptcp_subflow_context *subflow,u32 ssn)
@@ -958,9 +959,7 @@ 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 ); -if (subflow->mp_join || subflow->valid_csum_seen) - subflow->send_mp_fail =1 ; -return subflow->mp_join ?MAPPING_INVALID :MAPPING_DUMMY ; +return MAPPING_BAD_CSUM ; } subflow->valid_csum_seen =1 ;
@@ -1182,10 +1181,8 @@ static bool subflow_check_data_avail(struct sock *ssk) status =get_mapping_status (ssk, msk);trace_subflow_check_data_avail (status,skb_peek (&ssk->sk_receive_queue)); -if (unlikely (status ==MAPPING_INVALID )) - goto fallback; - -if (unlikely (status ==MAPPING_DUMMY )) +if (unlikely (status ==MAPPING_INVALID || status ==MAPPING_DUMMY || + status ==MAPPING_BAD_CSUM )) goto fallback;if (status !=MAPPING_OK )
@@ -1227,7 +1224,10 @@ static bool subflow_check_data_avail(struct sock *ssk) fallback:if (!__mptcp_check_fallback (msk)) {/* RFC 8684 section 3.7. */ -if (subflow->send_mp_fail) { +if (status ==MAPPING_BAD_CSUM && + (subflow->mp_join || subflow->valid_csum_seen)) { + subflow->send_mp_fail =1 ; +if (!READ_ONCE (msk->allow_infinite_fallback)) { ssk->sk_err =EBADMSG ;tcp_set_state (ssk,TCP_CLOSE );