diff options
author | jbaron@akamai.com <jbaron@akamai.com> | 2015-04-20 20:05:07 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-04-21 15:57:34 -0400 |
commit | 3c7151275c0c9a80c3375f9874b1c7129a105eea (patch) | |
tree | d1c703725e11d908f2d027dd62c22f83bc1e0c19 /net/ipv4/tcp_input.c | |
parent | 71cd26e76a9514715df7880db0a8f7c37c17149a (diff) | |
download | op-kernel-dev-3c7151275c0c9a80c3375f9874b1c7129a105eea.zip op-kernel-dev-3c7151275c0c9a80c3375f9874b1c7129a105eea.tar.gz |
tcp: add memory barriers to write space paths
Ensure that we either see that the buffer has write space
in tcp_poll() or that we perform a wakeup from the input
side. Did not run into any actual problem here, but thought
that we should make things explicit.
Signed-off-by: Jason Baron <jbaron@akamai.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index a7ef679..3a4d9b34 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4845,6 +4845,8 @@ static void tcp_check_space(struct sock *sk) { if (sock_flag(sk, SOCK_QUEUE_SHRUNK)) { sock_reset_flag(sk, SOCK_QUEUE_SHRUNK); + /* pairs with tcp_poll() */ + smp_mb__after_atomic(); if (sk->sk_socket && test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) tcp_new_space(sk); |