From 7f20d5fc708d30231bce074a099ac040b1b7d3e4 Mon Sep 17 00:00:00 2001 From: Paolo Abeni Date: Tue, 17 Mar 2020 15:53:34 +0100 Subject: mptcp: move msk state update to subflow_syn_recv_sock() After commit 58b09919626b ("mptcp: create msk early"), the msk socket is already available at subflow_syn_recv_sock() time. Let's move there the state update, to mirror more closely the first subflow state. The above will also help multiple subflow supports. Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts Signed-off-by: David S. Miller --- net/mptcp/protocol.c | 9 +++------ net/mptcp/subflow.c | 2 ++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 04c3caed92df..e959104832ef 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -861,6 +861,9 @@ struct sock *mptcp_sk_clone(const struct sock *sk, struct request_sock *req) ack_seq++; msk->ack_seq = ack_seq; } + + /* will be fully established after successful MPC subflow creation */ + inet_sk_state_store(nsk, TCP_SYN_RECV); bh_unlock_sock(nsk); /* keep a single reference */ @@ -916,10 +919,6 @@ static struct sock *mptcp_accept(struct sock *sk, int flags, int *err, mptcp_copy_inaddrs(newsk, ssk); list_add(&subflow->node, &msk->conn_list); - /* will be fully established at mptcp_stream_accept() - * completion. - */ - inet_sk_state_store(new_mptcp_sock, TCP_SYN_RECV); bh_unlock_sock(new_mptcp_sock); local_bh_enable(); } @@ -1256,8 +1255,6 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, if (!ssk->sk_socket) mptcp_sock_graft(ssk, newsock); } - - inet_sk_state_store(newsock->sk, TCP_ESTABLISHED); } sock_put(ssock->sk); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 8434c7f5f712..052d72a1d3a2 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -234,6 +234,8 @@ create_child: /* new mpc subflow takes ownership of the newly * created mptcp socket */ + inet_sk_state_store((struct sock *)new_msk, + TCP_ESTABLISHED); ctx->conn = new_msk; new_msk = NULL; } -- cgit v1.2.3