diff options
Diffstat (limited to 'lib/assoc_array.c')
| -rw-r--r-- | lib/assoc_array.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/assoc_array.c b/lib/assoc_array.c index c6659cb37033..edc3c14af41d 100644 --- a/lib/assoc_array.c +++ b/lib/assoc_array.c @@ -768,9 +768,11 @@ all_leaves_cluster_together:  		new_s0->index_key[i] =  			ops->get_key_chunk(index_key, i * ASSOC_ARRAY_KEY_CHUNK_SIZE); -	blank = ULONG_MAX << (level & ASSOC_ARRAY_KEY_CHUNK_MASK); -	pr_devel("blank off [%zu] %d: %lx\n", keylen - 1, level, blank); -	new_s0->index_key[keylen - 1] &= ~blank; +	if (level & ASSOC_ARRAY_KEY_CHUNK_MASK) { +		blank = ULONG_MAX << (level & ASSOC_ARRAY_KEY_CHUNK_MASK); +		pr_devel("blank off [%zu] %d: %lx\n", keylen - 1, level, blank); +		new_s0->index_key[keylen - 1] &= ~blank; +	}  	/* This now reduces to a node splitting exercise for which we'll need  	 * to regenerate the disparity table. @@ -1115,6 +1117,7 @@ struct assoc_array_edit *assoc_array_delete(struct assoc_array *array,  						index_key))  				goto found_leaf;  		} +		/* fall through */  	case assoc_array_walk_tree_empty:  	case assoc_array_walk_found_wrong_shortcut:  	default:  |