aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/rhashtable.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c
index 5f8fe3e88219..e75c48d9d82f 100644
--- a/lib/rhashtable.c
+++ b/lib/rhashtable.c
@@ -933,8 +933,6 @@ int rhashtable_init(struct rhashtable *ht, struct rhashtable_params *params)
933 if (params->nulls_base && params->nulls_base < (1U << RHT_BASE_SHIFT)) 933 if (params->nulls_base && params->nulls_base < (1U << RHT_BASE_SHIFT))
934 return -EINVAL; 934 return -EINVAL;
935 935
936 params->min_size = max(params->min_size, HASH_MIN_SIZE);
937
938 if (params->nelem_hint) 936 if (params->nelem_hint)
939 size = rounded_hashtable_size(params); 937 size = rounded_hashtable_size(params);
940 938
@@ -942,6 +940,14 @@ int rhashtable_init(struct rhashtable *ht, struct rhashtable_params *params)
942 mutex_init(&ht->mutex); 940 mutex_init(&ht->mutex);
943 memcpy(&ht->p, params, sizeof(*params)); 941 memcpy(&ht->p, params, sizeof(*params));
944 942
943 if (params->min_size)
944 ht->p.min_size = roundup_pow_of_two(params->min_size);
945
946 if (params->max_size)
947 ht->p.max_size = rounddown_pow_of_two(params->max_size);
948
949 ht->p.min_size = max(params->min_size, HASH_MIN_SIZE);
950
945 if (params->locks_mul) 951 if (params->locks_mul)
946 ht->p.locks_mul = roundup_pow_of_two(params->locks_mul); 952 ht->p.locks_mul = roundup_pow_of_two(params->locks_mul);
947 else 953 else