]> xenbits.xensource.com Git - xen.git/commitdiff
rbtree: remove redundant if()-condition in rb_erase()
authorWolfram Strepp <wstrepp@gmx.de>
Wed, 20 Dec 2017 17:00:49 +0000 (18:00 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 20 Dec 2017 17:00:49 +0000 (18:00 +0100)
Furthermore, notice that the initial checks:

            if (!node->rb_left)
                    child = node->rb_right;
            else if (!node->rb_right)
                    child = node->rb_left;
            else
            {
                    ...
            }
guarantee that old->rb_right is set in the final else branch, therefore
we can omit checking that again.

Signed-off-by: Wolfram Strepp <wstrepp@gmx.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[Linux commit 4b324126e0c6c3a5080ca3ec0981e8766ed6f1ee]

Ported to Xen.

Signed-off-by: Praveen Kumar <kpraveen.lkml@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/common/rbtree.c

index 167ebfdc4d3b21d86a68c49d055ff2ca9438343e..62e6387dcd26ec72774205f9a034c1f707554db2 100644 (file)
@@ -250,15 +250,15 @@ void rb_erase(struct rb_node *node, struct rb_root *root)
                        if (child)
                                rb_set_parent(child, parent);
                        parent->rb_left = child;
+
+                       node->rb_right = old->rb_right;
+                       rb_set_parent(old->rb_right, node);
                }
 
                node->rb_parent_color = old->rb_parent_color;
-               node->rb_right = old->rb_right;
                node->rb_left = old->rb_left;
-
                rb_set_parent(old->rb_left, node);
-               if (old->rb_right)
-                       rb_set_parent(old->rb_right, node);
+
                goto color;
        }