lkml.org 
[lkml]   [2017]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.11 09/28] tcp: fix access to sk->sk_state in tcp_poll()
    Date
    4.11-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Davide Caratti <dcaratti@redhat.com>


    [ Upstream commit d68be71ea14d609a5f31534003319be5db422595 ]

    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 <dcaratti@redhat.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv4/tcp.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/net/ipv4/tcp.c
    +++ b/net/ipv4/tcp.c
    @@ -533,7 +533,7 @@ unsigned int tcp_poll(struct file *file,

    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

    \
     
     \ /
      Last update: 2017-05-11 18:01    [W:2.170 / U:0.548 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site