Add comment on why we remove the same slice from free slices tree and
then add it back again when merging the slice to be released with
previous free slice.

Signed-off-by: Sergei Zviagintsev <ser...@s15v.net>
---
 ipc/kdbus/pool.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/ipc/kdbus/pool.c b/ipc/kdbus/pool.c
index 84afe96fbc22..c26ef963d8d1 100644
--- a/ipc/kdbus/pool.c
+++ b/ipc/kdbus/pool.c
@@ -304,6 +304,12 @@ static void __kdbus_pool_slice_release(struct 
kdbus_pool_slice *slice)
                s = list_entry(slice->entry.prev,
                               struct kdbus_pool_slice, entry);
                if (s->free) {
+                       /*
+                        * As size of slice increases after merge and free
+                        * slices tree is ordered by slice size, we have to
+                        * remove the slice from free slices tree and then add
+                        * it again to keep the tree balanced.
+                        */
                        rb_erase(&s->rb_node, &pool->slices_free);
                        list_del(&slice->entry);
                        s->size += slice->size;
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to