Message ID | dab15370315ced25255947ec1ea3d9b62e3387b9.1592477699.git.pabeni@redhat.com |
---|---|
State | Accepted, archived |
Delegated to: | Matthieu Baerts |
Headers | show |
Series | mptcp: fallback refactor follow-up | expand |
On Thu, 18 Jun 2020, Paolo Abeni wrote: > We need to take care of shutdown, too: drop the > special fallback handling. > > Additionally invoke the state_change op on the > relevant socket (the msk one). > > Signed-off-by: Paolo Abeni <pabeni@redhat.com> > --- > net/mptcp/protocol.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c > index faa804f63c81..2c15bf4cdb53 100644 > --- a/net/mptcp/protocol.c > +++ b/net/mptcp/protocol.c > @@ -1404,8 +1404,6 @@ static void mptcp_subflow_shutdown(struct sock *ssk, int how, > break; > } > > - /* Wake up anyone sleeping in poll. */ > - ssk->sk_state_change(ssk); > release_sock(ssk); > } > > @@ -2091,18 +2089,11 @@ static int mptcp_shutdown(struct socket *sock, int how) > { > struct mptcp_sock *msk = mptcp_sk(sock->sk); > struct mptcp_subflow_context *subflow; > - struct socket *ssock; > int ret = 0; > > pr_debug("sk=%p, how=%d", msk, how); > > lock_sock(sock->sk); > - ssock = __mptcp_tcp_fallback(msk); > - if (ssock) { > - release_sock(sock->sk); > - return inet_shutdown(ssock, how); > - } > - > if (how == SHUT_WR || how == SHUT_RDWR) > inet_sk_state_store(sock->sk, TCP_FIN_WAIT1); > > @@ -2128,6 +2119,9 @@ static int mptcp_shutdown(struct socket *sock, int how) > mptcp_subflow_shutdown(tcp_sk, how, 1, msk->write_seq); > } > > + /* Wake up anyone sleeping in poll. */ > + sock->sk->sk_state_change(sock->sk); > + I had added this to mptcp_shutdown in my WIP too, so looks good to me! > out_unlock: > release_sock(sock->sk); > > -- > 2.26.2 -- Mat Martineau Intel
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index faa804f63c81..2c15bf4cdb53 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1404,8 +1404,6 @@ static void mptcp_subflow_shutdown(struct sock *ssk, int how, break; } - /* Wake up anyone sleeping in poll. */ - ssk->sk_state_change(ssk); release_sock(ssk); } @@ -2091,18 +2089,11 @@ static int mptcp_shutdown(struct socket *sock, int how) { struct mptcp_sock *msk = mptcp_sk(sock->sk); struct mptcp_subflow_context *subflow; - struct socket *ssock; int ret = 0; pr_debug("sk=%p, how=%d", msk, how); lock_sock(sock->sk); - ssock = __mptcp_tcp_fallback(msk); - if (ssock) { - release_sock(sock->sk); - return inet_shutdown(ssock, how); - } - if (how == SHUT_WR || how == SHUT_RDWR) inet_sk_state_store(sock->sk, TCP_FIN_WAIT1); @@ -2128,6 +2119,9 @@ static int mptcp_shutdown(struct socket *sock, int how) mptcp_subflow_shutdown(tcp_sk, how, 1, msk->write_seq); } + /* Wake up anyone sleeping in poll. */ + sock->sk->sk_state_change(sock->sk); + out_unlock: release_sock(sock->sk);
We need to take care of shutdown, too: drop the special fallback handling. Additionally invoke the state_change op on the relevant socket (the msk one). Signed-off-by: Paolo Abeni <pabeni@redhat.com> --- net/mptcp/protocol.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)