diff options
Diffstat (limited to 'net/rds/connection.c')
| -rw-r--r-- | net/rds/connection.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/rds/connection.c b/net/rds/connection.c index 45e23660437a..378c3a6acf84 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c | |||
| @@ -51,10 +51,16 @@ static struct kmem_cache *rds_conn_slab; | |||
| 51 | 51 | ||
| 52 | static struct hlist_head *rds_conn_bucket(__be32 laddr, __be32 faddr) | 52 | static struct hlist_head *rds_conn_bucket(__be32 laddr, __be32 faddr) |
| 53 | { | 53 | { |
| 54 | static u32 rds_hash_secret __read_mostly; | ||
| 55 | |||
| 56 | unsigned long hash; | ||
| 57 | |||
| 58 | net_get_random_once(&rds_hash_secret, sizeof(rds_hash_secret)); | ||
| 59 | |||
| 54 | /* Pass NULL, don't need struct net for hash */ | 60 | /* Pass NULL, don't need struct net for hash */ |
| 55 | unsigned long hash = __inet_ehashfn(be32_to_cpu(laddr), 0, | 61 | hash = __inet_ehashfn(be32_to_cpu(laddr), 0, |
| 56 | be32_to_cpu(faddr), 0, | 62 | be32_to_cpu(faddr), 0, |
| 57 | inet_ehash_secret); | 63 | rds_hash_secret); |
| 58 | return &rds_conn_hash[hash & RDS_CONNECTION_HASH_MASK]; | 64 | return &rds_conn_hash[hash & RDS_CONNECTION_HASH_MASK]; |
| 59 | } | 65 | } |
| 60 | 66 | ||
