]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commit
tcp: bind() fix when many ports are bound
authorEric Dumazet <eric.dumazet@gmail.com>
Wed, 21 Apr 2010 09:26:15 +0000 (09:26 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Apr 2010 02:06:06 +0000 (19:06 -0700)
commitfda48a0d7a8412cedacda46a9c0bf8ef9cd13559
treef749b26dea4353c6f3bd95e49fafceb06623c20b
parent24acc6895616b373475e92e49925efc3ef591563
tcp: bind() fix when many ports are bound

Port autoselection done by kernel only works when number of bound
sockets is under a threshold (typically 30000).

When this threshold is over, we must check if there is a conflict before
exiting first loop in inet_csk_get_port()

Change inet_csk_bind_conflict() to forbid two reuse-enabled sockets to
bind on same (address,port) tuple (with a non ANY address)

Same change for inet6_csk_bind_conflict()

Reported-by: Gaspar Chilingarov <gasparch@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_connection_sock.c
net/ipv6/inet6_connection_sock.c