summaryrefslogtreecommitdiff
path: root/lib/radix-tree.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2018-05-19 15:20:49 +0200
committerThomas Gleixner <tglx@linutronix.de>2018-05-19 15:20:49 +0200
commit95b5c0a592c712496dce6c1ed772d5f9026b5ed3 (patch)
treeef00485760be3388bafc2eed41da185fb8a4858a /lib/radix-tree.c
parent985c78d3ff8e9c74450fa2bb08eb55e680d999ca (diff)
parent78ce241099bb363b19dbd0245442e66c8de8f567 (diff)
Merge branch 'ras/urgent' into ras/core
Pick up urgent fix as pending patch depends on it.
Diffstat (limited to 'lib/radix-tree.c')
-rw-r--r--lib/radix-tree.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index da9e10c827df..43e0cbedc3a0 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -1612,11 +1612,9 @@ static void set_iter_tags(struct radix_tree_iter *iter,
static void __rcu **skip_siblings(struct radix_tree_node **nodep,
void __rcu **slot, struct radix_tree_iter *iter)
{
- void *sib = node_to_entry(slot - 1);
-
while (iter->index < iter->next_index) {
*nodep = rcu_dereference_raw(*slot);
- if (*nodep && *nodep != sib)
+ if (*nodep && !is_sibling_entry(iter->node, *nodep))
return slot;
slot++;
iter->index = __radix_tree_iter_add(iter, 1);
@@ -1631,7 +1629,7 @@ void __rcu **__radix_tree_next_slot(void __rcu **slot,
struct radix_tree_iter *iter, unsigned flags)
{
unsigned tag = flags & RADIX_TREE_ITER_TAG_MASK;
- struct radix_tree_node *node = rcu_dereference_raw(*slot);
+ struct radix_tree_node *node;
slot = skip_siblings(&node, slot, iter);