X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=lib%2Fradix-tree.c;h=91f0727e3cada11bd721afdeeb112dd196546637;hb=3a8db79889ce16930aff19b818f5b09651bb7644;hp=1b7bf73141418f5f1427b14e806c9a9d4c6e7582;hpb=b067c9045af4791a5836042f743d12477131f7b5;p=cascardo%2Flinux.git diff --git a/lib/radix-tree.c b/lib/radix-tree.c index 1b7bf7314141..91f0727e3cad 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c @@ -105,10 +105,10 @@ static unsigned int radix_tree_descend(struct radix_tree_node *parent, #ifdef CONFIG_RADIX_TREE_MULTIORDER if (radix_tree_is_internal_node(entry)) { - unsigned long siboff = get_slot_offset(parent, entry); - if (siboff < RADIX_TREE_MAP_SIZE) { - offset = siboff; - entry = rcu_dereference_raw(parent->slots[offset]); + if (is_sibling_entry(parent, entry)) { + void **sibentry = (void **) entry_to_node(entry); + offset = get_slot_offset(parent, sibentry); + entry = rcu_dereference_raw(*sibentry); } } #endif