On Wed, 2016-06-22 at 15:20 -0400, Jason Baron wrote:

> hmm, I think we need the smp_mb() there. From
> tcp_poll() we have:
> 
> 1) set_bit(SOCK_NOSPACE, ...)  (write)
> 2) smp_mb__after_atomic();
> 3) if (sk_stream_is_writeable(sk)) (read)
> 
> while in tcp_check_space() its:
> 
> 1) the state that sk_stream_is_writeable() cares about (write)
> 2) smp_mb();
> 3) if (sk->sk_socket && test_bit(SOCK_NOSPACE,...) (read)


Oh right, thanks for checking.

> 
> So if we can show that there are sufficient barriers
> for #1 (directly above), maybe it can be down-graded or
> eliminated. But it would still seem somewhat fragile.
> 
> Note I didn't observe any missing wakeups here, but I
> just wanted to make sure we didn't miss any, since they
> can be quite hard to debug.
x

Reply via email to