diff options
Diffstat (limited to 'fs/ecryptfs/messaging.c')
| -rw-r--r-- | fs/ecryptfs/messaging.c | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c index 2d8dbce9d485..46c4dd8dfcc3 100644 --- a/fs/ecryptfs/messaging.c +++ b/fs/ecryptfs/messaging.c @@ -31,9 +31,9 @@ static struct mutex ecryptfs_msg_ctx_lists_mux;  static struct hlist_head *ecryptfs_daemon_hash;  struct mutex ecryptfs_daemon_hash_mux; -static int ecryptfs_hash_buckets; +static int ecryptfs_hash_bits;  #define ecryptfs_uid_hash(uid) \ -        hash_long((unsigned long)uid, ecryptfs_hash_buckets) +        hash_long((unsigned long)uid, ecryptfs_hash_bits)  static u32 ecryptfs_msg_counter;  static struct ecryptfs_msg_ctx *ecryptfs_msg_ctx_arr; @@ -486,18 +486,19 @@ int ecryptfs_init_messaging(void)  	}  	mutex_init(&ecryptfs_daemon_hash_mux);  	mutex_lock(&ecryptfs_daemon_hash_mux); -	ecryptfs_hash_buckets = 1; -	while (ecryptfs_number_of_users >> ecryptfs_hash_buckets) -		ecryptfs_hash_buckets++; +	ecryptfs_hash_bits = 1; +	while (ecryptfs_number_of_users >> ecryptfs_hash_bits) +		ecryptfs_hash_bits++;  	ecryptfs_daemon_hash = kmalloc((sizeof(struct hlist_head) -					* ecryptfs_hash_buckets), GFP_KERNEL); +					* (1 << ecryptfs_hash_bits)), +				       GFP_KERNEL);  	if (!ecryptfs_daemon_hash) {  		rc = -ENOMEM;  		printk(KERN_ERR "%s: Failed to allocate memory\n", __func__);  		mutex_unlock(&ecryptfs_daemon_hash_mux);  		goto out;  	} -	for (i = 0; i < ecryptfs_hash_buckets; i++) +	for (i = 0; i < (1 << ecryptfs_hash_bits); i++)  		INIT_HLIST_HEAD(&ecryptfs_daemon_hash[i]);  	mutex_unlock(&ecryptfs_daemon_hash_mux);  	ecryptfs_msg_ctx_arr = kmalloc((sizeof(struct ecryptfs_msg_ctx) @@ -554,7 +555,7 @@ void ecryptfs_release_messaging(void)  		int i;  		mutex_lock(&ecryptfs_daemon_hash_mux); -		for (i = 0; i < ecryptfs_hash_buckets; i++) { +		for (i = 0; i < (1 << ecryptfs_hash_bits); i++) {  			int rc;  			hlist_for_each_entry(daemon, elem,  | 
