diff mbox

[v2,11/29] radix-tree: Fix deleting a multi-order entry through an alias

Message ID 1460643410-30196-12-git-send-email-willy@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Matthew Wilcox April 14, 2016, 2:16 p.m. UTC
If we deleted an entry through an index which looked up a sibling
pointer, we'd end up zeroing out the wrong slots in the node.
Use get_slot_offset() to find the right slot.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
---
 lib/radix-tree.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox

Patch

diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index c0366d1..b3364b9 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -1558,7 +1558,7 @@  void *radix_tree_delete_item(struct radix_tree_root *root,
 		return entry;
 	}
 
-	offset = index & RADIX_TREE_MAP_MASK;
+	offset = get_slot_offset(node, slot);
 
 	/*
 	 * Clear all tags associated with the item to be deleted.