Patch "rhashtable: Enforce minimum size on initial hash table" has been added to the 4.1-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
rhashtable: Enforce minimum size on initial hash table
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
rhashtable-enforce-minimum-size-on-initial-hash-table.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Dec 30 19:52:45 PST 2015
From: Herbert Xu <[email protected]>
Date: Wed, 16 Dec 2015 18:13:14 +0800
Subject: rhashtable: Enforce minimum size on initial hash table
From: Herbert Xu <[email protected]>
[ Upstream commit 3a324606bbabfc30084ce9d08169910773ba9a92 ]
Quoted 5 lines · William Hua
I wasn't aware there was an enforced minimum size. I simply set the
nelem_hintin therhastable_paramsstruct to 1, expecting it to grow as needed. This caused a segfault afterwards when trying to insert an element.
OK we're doing the size computation before we enforce the limit on min_size.
---8<---
We need to do the initial hash table size computation after we have obtained the correct min_size/max_size parameters. Otherwise we may end up with a hash table whose size is outside the allowed envelope.
--- lib/rhashtable.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
lib/rhashtable.c +3 -3
@@ -730,9 +730,6 @@ int rhashtable_init(struct rhashtable *hif (params->nulls_base && params->nulls_base < (1U <<RHT_BASE_SHIFT ))return -EINVAL ; -if (params->nelem_hint) - size =rounded_hashtable_size (params); -memset (ht,0 ,sizeof (*ht));mutex_init (&ht->mutex);spin_lock_init (&ht->lock);
@@ -752,6 +749,9 @@ int rhashtable_init(struct rhashtable *h ht->p.min_size =max (ht->p.min_size,HASH_MIN_SIZE ); +if (params->nelem_hint) + size =rounded_hashtable_size (&ht->p); +/* The maximum (not average) chain length grows with the * size of the hash table, at a rate of (log N)/(log log N). * The value of 16 is selected so that even if the hash
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/rhashtable-fix-walker-list-corruption.patch queue-4.1/rhashtable-enforce-minimum-size-on-initial-hash-table.patch