mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
mptcp: move common nospace-pattern to a helper
Paolo noticed that ssk_check_wmem() has same pattern, so add/use common helper for both places. Suggested-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
eb682677f5
commit
a0e17064d4
@ -653,6 +653,15 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mptcp_nospace(struct mptcp_sock *msk, struct socket *sock)
|
||||
{
|
||||
clear_bit(MPTCP_SEND_SPACE, &msk->flags);
|
||||
smp_mb__after_atomic(); /* msk->flags is changed by write_space cb */
|
||||
|
||||
/* enables sk->write_space() callbacks */
|
||||
set_bit(SOCK_NOSPACE, &sock->flags);
|
||||
}
|
||||
|
||||
static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
|
||||
{
|
||||
struct mptcp_subflow_context *subflow;
|
||||
@ -666,13 +675,8 @@ static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
|
||||
if (!sk_stream_memory_free(ssk)) {
|
||||
struct socket *sock = ssk->sk_socket;
|
||||
|
||||
if (sock) {
|
||||
clear_bit(MPTCP_SEND_SPACE, &msk->flags);
|
||||
smp_mb__after_atomic();
|
||||
|
||||
/* enables sk->write_space() callbacks */
|
||||
set_bit(SOCK_NOSPACE, &sock->flags);
|
||||
}
|
||||
if (sock)
|
||||
mptcp_nospace(msk, sock);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -698,13 +702,8 @@ static void ssk_check_wmem(struct mptcp_sock *msk, struct sock *ssk)
|
||||
return;
|
||||
|
||||
sock = READ_ONCE(ssk->sk_socket);
|
||||
|
||||
if (sock) {
|
||||
clear_bit(MPTCP_SEND_SPACE, &msk->flags);
|
||||
smp_mb__after_atomic();
|
||||
/* set NOSPACE only after clearing SEND_SPACE flag */
|
||||
set_bit(SOCK_NOSPACE, &sock->flags);
|
||||
}
|
||||
if (sock)
|
||||
mptcp_nospace(msk, sock);
|
||||
}
|
||||
|
||||
static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
||||
|
Loading…
Reference in New Issue
Block a user