On Tue, Jul 21, 2020 at 2:16 AM Kuniyuki Iwashima <kun...@amazon.co.jp> wrote: > > 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 <will...@google.com> > Reviewed-by: Benjamin Herrenschmidt <b...@amazon.com> > Signed-off-by: Kuniyuki Iwashima <kun...@amazon.co.jp>
Acked-by: Willem de Bruijn <will...@google.com> Thanks. Yes, I missed this resize operation when adding the field.