diff options
author | Jianguo Wu <wujianguo@chinatelecom.cn> | 2021-07-10 02:20:49 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-07-10 03:38:53 +0200 |
commit | 6787b7e350d3552651a3422d3d8980fbc8d65368 (patch) | |
tree | 88daa792c9080e57f9834d973dcbb6b253d27bcd /include/net/mptcp.h | |
parent | mptcp: fix syncookie process if mptcp can not_accept new subflow (diff) | |
download | linux-6787b7e350d3552651a3422d3d8980fbc8d65368.tar.xz linux-6787b7e350d3552651a3422d3d8980fbc8d65368.zip |
mptcp: avoid processing packet if a subflow reset
If check_fully_established() causes a subflow reset, it should not
continue to process the packet in tcp_data_queue().
Add a return value to mptcp_incoming_options(), and return false if a
subflow has been reset, else return true. Then drop the packet in
tcp_data_queue()/tcp_rcv_state_process() if mptcp_incoming_options()
return false.
Fixes: d582484726c4 ("mptcp: fix fallback for MP_JOIN subflows")
Signed-off-by: Jianguo Wu <wujianguo@chinatelecom.cn>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/mptcp.h')
-rw-r--r-- | include/net/mptcp.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/net/mptcp.h b/include/net/mptcp.h index cb580b06152f..8b5af683a818 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -105,7 +105,7 @@ bool mptcp_synack_options(const struct request_sock *req, unsigned int *size, bool mptcp_established_options(struct sock *sk, struct sk_buff *skb, unsigned int *size, unsigned int remaining, struct mptcp_out_options *opts); -void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb); +bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb); void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, struct mptcp_out_options *opts); @@ -227,9 +227,10 @@ static inline bool mptcp_established_options(struct sock *sk, return false; } -static inline void mptcp_incoming_options(struct sock *sk, +static inline bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb) { + return true; } static inline void mptcp_skb_ext_move(struct sk_buff *to, |