Messages in this thread | | | Date | Fri, 13 Jan 2012 16:22:36 +0000 | From | Al Viro <> | Subject | Re: [PATCH] Fix panic in __d_lookup with high dentry hashtable counts |
| |
On Fri, Jan 13, 2012 at 09:52:37AM -0600, Dimitri Sivanich wrote: > When the number of dentry cache hash table entries gets too high > (2147483648 entries), use of a signed integer in the initialization > loop prevents the dentry_hashtable from getting initialized, resulting > in a panic in __d_lookup. Fixing this in dcache_init and a few other > spots for consistency.
> static void __init dcache_init(void) > { > - int loop; > + long loop;
You've got to be kidding. Note that D_HASHMASK is at most 32bit. Use of long here is an overkill and so's 2^31 hash buckets (that's what, 16Gb in hash list heads alone? What kind of average chain length do you expect, BTW?)
Can alloc_large_system_hash() produce the horrors that large, anyway?
| |