lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 14 Dec 2007 22:40:49 +0100 From: Jarek Poplawski <jarkao2@...il.com> To: Jarek Poplawski <jarkao2@...il.com> CC: Eric Dumazet <dada1@...mosbay.com>, Patrick McHardy <kaber@...sh.net>, netfilter-devel@...r.kernel.org, netdev@...r.kernel.org Subject: Re: [NETFILTER] xt_hashlimit : speedups hash_dst() Jarek Poplawski wrote, On 12/14/2007 09:59 PM: > Eric Dumazet wrote, On 12/14/2007 12:09 PM: > ... > >> + /* >> + * Instead of returning hash % ht->cfg.size (implying a divide) >> + * we return the high 32 bits of the (hash * ht->cfg.size) that will >> + * give results between [0 and cfg.size-1] and same hash distribution, >> + * but using a multiply, less expensive than a divide >> + */ >> + return ((u64)hash * ht->cfg.size) >> 32; > > Are we sure of the same hash distribution? Probably I miss something, > but: if this 'hash' is well distributed on 32 bits, and ht->cfg.size > is smaller than 32 bits, e.g. 256 (8 bits), then this multiplication > moves to the higher 32 of u64 only max. 8 bits of the most significant > byte, and the other three bytes are never used, while division is > always affected by all four bytes... OOPS! So, I've missed this division here is also affected by only one byte, but from the other side - so, almost the same... It seems this could have been replaced with masking from the beginning... Sorry, Jarek P. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists