inet: add struct net argument to inet_bhashfn
Binding to some port in many namespaces may create too long chains in bhash-es, so prepare the hashfn to take struct net into account. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
19c7578fb2
commit
7f635ab71e
@@ -103,7 +103,8 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum)
|
||||
rover = net_random() % remaining + low;
|
||||
|
||||
do {
|
||||
head = &hashinfo->bhash[inet_bhashfn(rover, hashinfo->bhash_size)];
|
||||
head = &hashinfo->bhash[inet_bhashfn(net, rover,
|
||||
hashinfo->bhash_size)];
|
||||
spin_lock(&head->lock);
|
||||
inet_bind_bucket_for_each(tb, node, &head->chain)
|
||||
if (tb->ib_net == net && tb->port == rover)
|
||||
@@ -130,7 +131,8 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum)
|
||||
*/
|
||||
snum = rover;
|
||||
} else {
|
||||
head = &hashinfo->bhash[inet_bhashfn(snum, hashinfo->bhash_size)];
|
||||
head = &hashinfo->bhash[inet_bhashfn(net, snum,
|
||||
hashinfo->bhash_size)];
|
||||
spin_lock(&head->lock);
|
||||
inet_bind_bucket_for_each(tb, node, &head->chain)
|
||||
if (tb->ib_net == net && tb->port == snum)
|
||||
|
Reference in New Issue
Block a user