diff options
author | Florian Westphal <fw@strlen.de> | 2021-02-13 00:59:59 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-02-13 01:31:46 +0100 |
commit | 4d54cc32112d8d8b0667559c9309f1a6f764f70b (patch) | |
tree | 05ec63a09dc8ed396f0ff2694a4d25fd752beba5 /net/mptcp | |
parent | mptcp: pass subflow socket to a few helpers (diff) | |
download | linux-4d54cc32112d8d8b0667559c9309f1a6f764f70b.tar.xz linux-4d54cc32112d8d8b0667559c9309f1a6f764f70b.zip |
mptcp: avoid lock_fast usage in accept path
Once event support is added this may need to allocate memory while msk
lock is held with softirqs disabled.
Not using lock_fast also allows to do the allocation with GFP_KERNEL.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mptcp')
-rw-r--r-- | net/mptcp/protocol.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 56240b87d464..fe6da1b77723 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3260,9 +3260,8 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, struct mptcp_sock *msk = mptcp_sk(newsock->sk); struct mptcp_subflow_context *subflow; struct sock *newsk = newsock->sk; - bool slowpath; - slowpath = lock_sock_fast(newsk); + lock_sock(newsk); /* PM/worker can now acquire the first subflow socket * lock without racing with listener queue cleanup, @@ -3288,7 +3287,7 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, if (!ssk->sk_socket) mptcp_sock_graft(ssk, newsock); } - unlock_sock_fast(newsk, slowpath); + release_sock(newsk); } if (inet_csk_listen_poll(ssock->sk)) |