X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Frds%2Fconnection.c;h=378c3a6acf84cab59346ab832d2fffba33e6e543;hb=c4de673b775e4db48cd2db6277e0c6714332ca0c;hp=45e23660437a6ed15006e7a125cea99183c86c04;hpb=65cd8033ff375b68037df61603ee68070dc48578;p=~andy%2Flinux diff --git a/net/rds/connection.c b/net/rds/connection.c index 45e23660437..378c3a6acf8 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c @@ -51,10 +51,16 @@ static struct kmem_cache *rds_conn_slab; static struct hlist_head *rds_conn_bucket(__be32 laddr, __be32 faddr) { + static u32 rds_hash_secret __read_mostly; + + unsigned long hash; + + net_get_random_once(&rds_hash_secret, sizeof(rds_hash_secret)); + /* Pass NULL, don't need struct net for hash */ - unsigned long hash = __inet_ehashfn(be32_to_cpu(laddr), 0, - be32_to_cpu(faddr), 0, - inet_ehash_secret); + hash = __inet_ehashfn(be32_to_cpu(laddr), 0, + be32_to_cpu(faddr), 0, + rds_hash_secret); return &rds_conn_hash[hash & RDS_CONNECTION_HASH_MASK]; }