Re: [PATCH] net: Fix __inet_inherit_port() to correctly increment bsockets and num_owners

Nagendra Tomar
2010-11-26T09:40:13Z

--- On Fri, 26/11/10, Eric Dumazet <eric.dumazet@gmail.com> wrote:

>
> OK so you'll have to make a proof, because current code
> seems to work ;)
>
>

ok, so I printed hashinfo->bsockets and tb->num_owners inside __inet_put_port() and I could see both of them to be -ve. All we need to do is establish and terminate a connection. I used netcat for that.

The only place 'bsockets' and 'num_owners' are used is inet_csk_get_port() and the only effect that they might have is on the choice of the port to be used for binding.
'bsockets' is used as a hint to stop searching for a free port (and instead share an already used port) when we know that all the ports could be used up.
'num_owners' is used to find the port which is least shared (to balance the 'owners' list) in case we need to share a port.

Since both of these are used as optimizations (in the bind path), they do not affect correctness and hence the code works even with these values not being updated correctly.

Thanks,
Tomar