summaryrefslogtreecommitdiff
path: root/lib/radix-tree.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-09-30 10:54:46 +0200
committerIngo Molnar <mingo@kernel.org>2016-09-30 10:54:46 +0200
commit0b429e18c284af3e7a39f8ec44d95116c473fef8 (patch)
tree7957f57dc70c95a32f71896c9a526ca88b5517ad /lib/radix-tree.c
parentd32cdbfb0ba319e44f75437afde868f7cafdc467 (diff)
parent53061afee43bc5041b67a45b6d793e7afdcf9ca7 (diff)
downloadlinux-0b429e18c284af3e7a39f8ec44d95116c473fef8.tar.gz
linux-0b429e18c284af3e7a39f8ec44d95116c473fef8.tar.bz2
linux-0b429e18c284af3e7a39f8ec44d95116c473fef8.zip
Merge branch 'linus' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'lib/radix-tree.c')
-rw-r--r--lib/radix-tree.c8
1 files changed, 4 insertions, 4 deletions
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