Re: [PATCH net] tcp: fix access to sk->sk_state in tcp_poll()
From: Davide CarattiDate: Wed, 26 Apr 2017 19:07:35 +0200 > avoid direct access to sk->sk_state when tcp_poll() is called on a socket > using active TCP fastopen with deferred connect. Use local variable > 'state', which stores the result of sk_state_load(), like it was done in > commit 00fd38d938db ("tcp: ensure proper barriers in lockless contexts"). > > Fixes: 19f6d3f3c842 ("net/tcp-fastopen: Add new API support") > Signed-off-by: Davide Caratti Applied.
Re: [PATCH net] tcp: fix access to sk->sk_state in tcp_poll()
On Wed, Apr 26, 2017 at 10:07 AM, Davide Carattiwrote: > avoid direct access to sk->sk_state when tcp_poll() is called on a socket > using active TCP fastopen with deferred connect. Use local variable > 'state', which stores the result of sk_state_load(), like it was done in > commit 00fd38d938db ("tcp: ensure proper barriers in lockless contexts"). > > Fixes: 19f6d3f3c842 ("net/tcp-fastopen: Add new API support") > Signed-off-by: Davide Caratti Acked-by: Wei Wang Thanks for the fix.
[PATCH net] tcp: fix access to sk->sk_state in tcp_poll()
avoid direct access to sk->sk_state when tcp_poll() is called on a socket using active TCP fastopen with deferred connect. Use local variable 'state', which stores the result of sk_state_load(), like it was done in commit 00fd38d938db ("tcp: ensure proper barriers in lockless contexts"). Fixes: 19f6d3f3c842 ("net/tcp-fastopen: Add new API support") Signed-off-by: Davide Caratti--- net/ipv4/tcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 40ba424..2dc7fcf 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -533,7 +533,7 @@ unsigned int tcp_poll(struct file *file, struct socket *sock, poll_table *wait) if (tp->urg_data & TCP_URG_VALID) mask |= POLLPRI; - } else if (sk->sk_state == TCP_SYN_SENT && inet_sk(sk)->defer_connect) { + } else if (state == TCP_SYN_SENT && inet_sk(sk)->defer_connect) { /* Active TCP fastopen socket with defer_connect * Return POLLOUT so application can call write() * in order for kernel to generate SYN+data -- 2.7.4