Index: uspace/lib/cpp/include/internal/rbtree.hpp
===================================================================
--- uspace/lib/cpp/include/internal/rbtree.hpp	(revision 27f1bc0d8316b632a744146c361bd5e8ffc919dd)
+++ uspace/lib/cpp/include/internal/rbtree.hpp	(revision 4f22d0c3877976ea5218a065625ad264bbfea224)
@@ -125,5 +125,14 @@
             iterator end()
             {
-                return iterator{find_largest_(), true};
+                /**
+                 * In case we have lists of nodes
+                 * we need to get the actual end
+                 * from the largest node.
+                 */
+                auto res = find_largest_();
+                if (res)
+                    return iterator{res->get_end(), true};
+                else
+                    return iterator{res, true};
             }
 
@@ -160,5 +169,9 @@
             const_iterator cend() const
             {
-                return const_iterator{find_largest_(), true};
+                auto res = find_largest_();
+                if (res)
+                    return const_iterator{res->get_end(), true};
+                else
+                    return const_iterator{res, true};
             }
 
Index: uspace/lib/cpp/include/internal/rbtree_node.hpp
===================================================================
--- uspace/lib/cpp/include/internal/rbtree_node.hpp	(revision 27f1bc0d8316b632a744146c361bd5e8ffc919dd)
+++ uspace/lib/cpp/include/internal/rbtree_node.hpp	(revision 4f22d0c3877976ea5218a065625ad264bbfea224)
@@ -401,4 +401,14 @@
             }
 
+            rbtree_single_node* get_end()
+            {
+                return this;
+            }
+
+            const rbtree_single_node* get_end() const
+            {
+                return this;
+            }
+
             ~rbtree_single_node()
             {
@@ -428,6 +438,8 @@
             rbtree_multi_node(Args&&... args)
                 : value{forward<Args>(args)...}, color{rbcolor::red},
-                  parent_{}, left_{}, right_{}, next_{}, first_{this}
-            { /* DUMMY BODY */ }
+                  parent_{}, left_{}, right_{}, next_{}, first_{}
+            {
+                first_ = this;
+            }
 
             rbtree_multi_node* parent() const
@@ -615,4 +627,25 @@
             }
 
+            rbtree_multi_node* get_end()
+            {
+                return const_cast<rbtree_multi_node*>(
+                    const_cast<const rbtree_multi_node*>(this)->get_end()
+                );
+            }
+
+            const rbtree_multi_node* get_end() const
+            {
+                if (!next_)
+                    return this;
+                else
+                {
+                    auto tmp = next_;
+                    while (tmp->next_)
+                        tmp = tmp->next_;
+
+                    return tmp;
+                }
+            }
+
             ~rbtree_multi_node()
             {
@@ -620,5 +653,5 @@
                 if (left_)
                     delete left_;
-                if (right)
+                if (right_)
                     delete right_;
 
