diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2014-08-23 20:58:54 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-08-23 12:21:21 -0700 |
commit | 8fc54f68919298ff9689d980efb495707ef43f30 (patch) | |
tree | c8a0c89621a9e670be02764a357bb6e73ed7ab6c /net/netfilter/nf_nat_core.c | |
parent | 690e36e726d00d2528bc569809048adf61550d80 (diff) | |
download | op-kernel-dev-8fc54f68919298ff9689d980efb495707ef43f30.zip op-kernel-dev-8fc54f68919298ff9689d980efb495707ef43f30.tar.gz |
net: use reciprocal_scale() helper
Replace open codings of (((u64) <x> * <y>) >> 32) with reciprocal_scale().
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netfilter/nf_nat_core.c')
-rw-r--r-- | net/netfilter/nf_nat_core.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c index 552f97c..4e0b478 100644 --- a/net/netfilter/nf_nat_core.c +++ b/net/netfilter/nf_nat_core.c @@ -126,7 +126,8 @@ hash_by_src(const struct net *net, u16 zone, /* Original src, to ensure we map it consistently if poss. */ hash = jhash2((u32 *)&tuple->src, sizeof(tuple->src) / sizeof(u32), tuple->dst.protonum ^ zone ^ nf_conntrack_hash_rnd); - return ((u64)hash * net->ct.nat_htable_size) >> 32; + + return reciprocal_scale(hash, net->ct.nat_htable_size); } /* Is this tuple already taken? (not by us) */ @@ -274,7 +275,7 @@ find_best_ips_proto(u16 zone, struct nf_conntrack_tuple *tuple, } var_ipp->all[i] = (__force __u32) - htonl(minip + (((u64)j * dist) >> 32)); + htonl(minip + reciprocal_scale(j, dist)); if (var_ipp->all[i] != range->max_addr.all[i]) full_range = true; |