@@ -2646,8 +2646,13 @@ static int mptcp_disconnect(struct sock *sk, int flags)structmptcp_sock*msk=mptcp_sk(sk);__mptcp_flush_join_list(msk);-mptcp_for_each_subflow(msk,subflow)-tcp_disconnect(mptcp_subflow_tcp_sock(subflow),flags);+mptcp_for_each_subflow(msk,subflow){+structsock*ssk=mptcp_subflow_tcp_sock(subflow);++lock_sock(ssk);+tcp_disconnect(ssk,flags);+release_sock(ssk);+}
Reviewed-by: Eric Dumazet <edumazet@google.com>
Note that for loops like this one, calling non blocking functions,
you could use lock_sock_fast()
(Probably does not matter in slow path)
Hello:
This patch was applied to netdev/net.git (refs/heads/master):
On Thu, 14 Jan 2021 16:37:37 +0100 you wrote:
tcp_disconnect() expects the caller acquires the sock lock,
but mptcp_disconnect() is not doing that. Add the missing
required lock.
Reported-by: Eric Dumazet <redacted>
Fixes: 76e2a55d1625 ("mptcp: better msk-level shutdown.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
[...]