diff options
| author | Paolo Abeni <[email protected]> | 2024-10-21 07:14:18 +0000 |
|---|---|---|
| committer | Paolo Abeni <[email protected]> | 2024-10-21 07:14:18 +0000 |
| commit | 91afa49a3eda8ebf902ce68f02cb16b48c879b6a (patch) | |
| tree | 3ceca7290ee7358c8e647b27f992604ce9c7ec20 /net/mptcp/subflow.c | |
| parent | net: ftgmac100: correct the phy interface of NC-SI mode (diff) | |
| parent | Merge tag 'net-6.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/net... (diff) | |
| download | kernel-91afa49a3eda8ebf902ce68f02cb16b48c879b6a.tar.gz kernel-91afa49a3eda8ebf902ce68f02cb16b48c879b6a.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-6.12-rc4).
Conflicts:
107a034d5c1e ("net/mlx5: qos: Store rate groups in a qos domain")
1da9cfd6c41c ("net/mlx5: Unregister notifier on eswitch init failure")
Signed-off-by: Paolo Abeni <[email protected]>
Diffstat (limited to 'net/mptcp/subflow.c')
| -rw-r--r-- | net/mptcp/subflow.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 25dde81bcb75..6170f2fff71e 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -132,6 +132,13 @@ static void subflow_add_reset_reason(struct sk_buff *skb, u8 reason) } } +static int subflow_reset_req_endp(struct request_sock *req, struct sk_buff *skb) +{ + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEENDPATTEMPT); + subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); + return -EPERM; +} + /* Init mptcp request socket. * * Returns an error code if a JOIN has failed and a TCP reset @@ -165,6 +172,8 @@ static int subflow_check_req(struct request_sock *req, if (opt_mp_capable) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVE); + if (unlikely(listener->pm_listener)) + return subflow_reset_req_endp(req, skb); if (opt_mp_join) return 0; } else if (opt_mp_join) { @@ -172,6 +181,8 @@ static int subflow_check_req(struct request_sock *req, if (mp_opt.backup) SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINSYNBACKUPRX); + } else if (unlikely(listener->pm_listener)) { + return subflow_reset_req_endp(req, skb); } if (opt_mp_capable && listener->request_mptcp) { |
