lkml.org 
[lkml]   [2018]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 17/92] tcp: ignore Fast Open on repair mode
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Yuchung Cheng <ycheng@google.com>

    [ Upstream commit 16ae6aa1705299789f71fdea59bfb119c1fbd9c0 ]

    The TCP repair sequence of operation is to first set the socket in
    repair mode, then inject the TCP stats into the socket with repair
    socket options, then call connect() to re-activate the socket. The
    connect syscall simply returns and set state to ESTABLISHED
    mode. As a result Fast Open is meaningless for TCP repair.

    However allowing sendto() system call with MSG_FASTOPEN flag half-way
    during the repair operation could unexpectedly cause data to be
    sent, before the operation finishes changing the internal TCP stats
    (e.g. MSS). This in turn triggers TCP warnings on inconsistent
    packet accounting.

    The fix is to simply disallow Fast Open operation once the socket
    is in the repair mode.

    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Eric Dumazet <edumazet@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
    @@ -1108,7 +1108,7 @@ int tcp_sendmsg(struct sock *sk, struct
    lock_sock(sk);

    flags = msg->msg_flags;
    - if (flags & MSG_FASTOPEN) {
    + if ((flags & MSG_FASTOPEN) && !tp->repair) {
    err = tcp_sendmsg_fastopen(sk, msg, &copied_syn, size);
    if (err == -EINPROGRESS && copied_syn > 0)
    goto out;

    \
     
     \ /
      Last update: 2018-05-24 14:12    [W:4.351 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site