diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2013-10-19 15:48:57 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-19 19:45:35 -0400 |
commit | 1bbdceef1e535add893bf71d7b7ab102e4eb69eb (patch) | |
tree | e2eed21c778d0a6458f8350ce5f6fbfc6c58810e /net/ipv4/udp.c | |
parent | b23a002fc6f0c19846ee0382f019429af54a27e9 (diff) |
inet: convert inet_ehash_secret and ipv6_hash_secret to net_get_random_once
Initialize the ehash and ipv6_hash_secrets with net_get_random_once.
Each compilation unit gets its own secret now:
ipv4/inet_hashtables.o
ipv4/udp.o
ipv6/inet6_hashtables.o
ipv6/udp.o
rds/connection.o
The functions still get inlined into the hashing functions. In the fast
path we have at most two (needed in ipv6) if (unlikely(...)).
Cc: Eric Dumazet <edumazet@google.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index b4437c7db6ce..89909dd730dd 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -411,8 +411,12 @@ static unsigned int udp_ehashfn(struct net *net, const __be32 laddr, | |||
411 | const __u16 lport, const __be32 faddr, | 411 | const __u16 lport, const __be32 faddr, |
412 | const __be16 fport) | 412 | const __be16 fport) |
413 | { | 413 | { |
414 | static u32 udp_ehash_secret __read_mostly; | ||
415 | |||
416 | net_get_random_once(&udp_ehash_secret, sizeof(udp_ehash_secret)); | ||
417 | |||
414 | return __inet_ehashfn(laddr, lport, faddr, fport, | 418 | return __inet_ehashfn(laddr, lport, faddr, fport, |
415 | inet_ehash_secret + net_hash_mix(net)); | 419 | udp_ehash_secret + net_hash_mix(net)); |
416 | } | 420 | } |
417 | 421 | ||
418 | 422 | ||