diff options
author | Paolo Abeni <pabeni@redhat.com> | 2020-07-23 14:02:34 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-23 21:47:25 +0300 |
commit | b7514694ed2952684a1e4fc44d83682140fd8cef (patch) | |
tree | 468b94431292db85adcd8e07cf1381e89e0b2d59 /net/mptcp/subflow.c | |
parent | fa25e815d963115eb06036a8f6a50e724bc259e2 (diff) | |
download | linux-b7514694ed2952684a1e4fc44d83682140fd8cef.tar.xz |
subflow: explicitly check for plain tcp rsk
When syncookie are in use, the TCP stack may feed into
subflow_syn_recv_sock() plain TCP request sockets. We can't
access mptcp_subflow_request_sock-specific fields on such
sockets. Explicitly check the rsk ops to do safe accesses.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Tested-by: Christoph Paasch <cpaasch@apple.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mptcp/subflow.c')
-rw-r--r-- | net/mptcp/subflow.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 7f3ef1840df5..3ef445f59556 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -415,7 +415,7 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, /* hopefully temporary handling for MP_JOIN+syncookie */ subflow_req = mptcp_subflow_rsk(req); - fallback_is_fatal = subflow_req->mp_join; + fallback_is_fatal = tcp_rsk(req)->is_mptcp && subflow_req->mp_join; fallback = !tcp_rsk(req)->is_mptcp; if (fallback) goto create_child; |