[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200219.163455.2118359448089082650.davem@davemloft.net>
Date: Wed, 19 Feb 2020 16:34:55 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: willemdebruijn.kernel@...il.com
Cc: netdev@...r.kernel.org, plroskin@...il.com, edumazet@...gle.com,
willemb@...gle.com
Subject: Re: [PATCH net] udp: rehash on disconnect
From: Willem de Bruijn <willemdebruijn.kernel@...il.com>
Date: Wed, 19 Feb 2020 14:16:32 -0500
> From: Willem de Bruijn <willemb@...gle.com>
>
> As of the below commit, udp sockets bound to a specific address can
> coexist with one bound to the any addr for the same port.
>
> The commit also phased out the use of socket hashing based only on
> port (hslot), in favor of always hashing on {addr, port} (hslot2).
>
> The change broke the following behavior with disconnect (AF_UNSPEC):
>
> server binds to 0.0.0.0:1337
> server connects to 127.0.0.1:80
> server disconnects
> client connects to 127.0.0.1:1337
> client sends "hello"
> server reads "hello" // times out, packet did not find sk
>
> On connect the server acquires a specific source addr suitable for
> routing to its destination. On disconnect it reverts to the any addr.
>
> The connect call triggers a rehash to a different hslot2. On
> disconnect, add the same to return to the original hslot2.
>
> Skip this step if the socket is going to be unhashed completely.
>
> Fixes: 4cdeeee9252a ("net: udp: prefer listeners bound to an address")
> Reported-by: Pavel Roskin <plroskin@...il.com>
> Signed-off-by: Willem de Bruijn <willemb@...gle.com>
Applied and queued up for -stable, thanks Willem.
Powered by blists - more mailing lists