lkml.org 
[lkml]   [2020]   [Jul]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 16/20] udp: Copy has_conns in reuseport_grow().
    Date
    From: Kuniyuki Iwashima <kuniyu@amazon.co.jp>

    [ Upstream commit f2b2c55e512879a05456eaf5de4d1ed2f7757509 ]

    If an unconnected socket in a UDP reuseport group connect()s, has_conns is
    set to 1. Then, when a packet is received, udp[46]_lib_lookup2() scans all
    sockets in udp_hslot looking for the connected socket with the highest
    score.

    However, when the number of sockets bound to the port exceeds max_socks,
    reuseport_grow() resets has_conns to 0. It can cause udp[46]_lib_lookup2()
    to return without scanning all sockets, resulting in that packets sent to
    connected sockets may be distributed to unconnected sockets.

    Therefore, reuseport_grow() should copy has_conns.

    Fixes: acdcecc61285 ("udp: correct reuseport selection with connected sockets")
    CC: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Benjamin Herrenschmidt <benh@amazon.com>
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/core/sock_reuseport.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/net/core/sock_reuseport.c
    +++ b/net/core/sock_reuseport.c
    @@ -101,6 +101,7 @@ static struct sock_reuseport *reuseport_
    more_reuse->prog = reuse->prog;
    more_reuse->reuseport_id = reuse->reuseport_id;
    more_reuse->bind_inany = reuse->bind_inany;
    + more_reuse->has_conns = reuse->has_conns;

    memcpy(more_reuse->socks, reuse->socks,
    reuse->num_socks * sizeof(struct sock *));

    \
     
     \ /
      Last update: 2020-07-30 10:22    [W:3.191 / U:0.480 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site