diff options
Diffstat (limited to 'lib/xarray.c')
| -rw-r--r-- | lib/xarray.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/xarray.c b/lib/xarray.c index 5fa51614802a..f5d8f54907b4 100644 --- a/lib/xarray.c +++ b/lib/xarray.c @@ -987,7 +987,7 @@ static void node_set_marks(struct xa_node *node, unsigned int offset,   * xas_split_alloc() - Allocate memory for splitting an entry.   * @xas: XArray operation state.   * @entry: New entry which will be stored in the array. - * @order: New entry order. + * @order: Current entry order.   * @gfp: Memory allocation flags.   *   * This function should be called before calling xas_split(). @@ -1011,7 +1011,7 @@ void xas_split_alloc(struct xa_state *xas, void *entry, unsigned int order,  	do {  		unsigned int i; -		void *sibling; +		void *sibling = NULL;  		struct xa_node *node;  		node = kmem_cache_alloc(radix_tree_node_cachep, gfp); @@ -1021,7 +1021,7 @@ void xas_split_alloc(struct xa_state *xas, void *entry, unsigned int order,  		for (i = 0; i < XA_CHUNK_SIZE; i++) {  			if ((i & mask) == 0) {  				RCU_INIT_POINTER(node->slots[i], entry); -				sibling = xa_mk_sibling(0); +				sibling = xa_mk_sibling(i);  			} else {  				RCU_INIT_POINTER(node->slots[i], sibling);  			} @@ -1041,9 +1041,10 @@ EXPORT_SYMBOL_GPL(xas_split_alloc);   * xas_split() - Split a multi-index entry into smaller entries.   * @xas: XArray operation state.   * @entry: New entry to store in the array. - * @order: New entry order. + * @order: Current entry order.   * - * The value in the entry is copied to all the replacement entries. + * The size of the new entries is set in @xas.  The value in @entry is + * copied to all the replacement entries.   *   * Context: Any context.  The caller should hold the xa_lock.   */  | 
