[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 1/4] LostIOv2: Knoten beim unlink aus Liste löschen



! LostIOv2: Wenn Userspace-Services einen Knoten gelöscht haben, dann
  wurde der zwar beim Kernel abgemeldet und der Speicher freigegeben,
  aber er wurde nicht aus der Userspace-Liste der Verzeichniseinträge
  gelöscht. Über kurz oder lang gibt das Rot.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/lib/lostio/lio_server.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/modules/lib/lostio/lio_server.c b/src/modules/lib/lostio/lio_server.c
index 2f3825d..e90e3f7 100644
--- a/src/modules/lib/lostio/lio_server.c
+++ b/src/modules/lib/lostio/lio_server.c
@@ -527,5 +527,16 @@ struct lio_node* lio_resource_get_child(struct lio_resource* parent,
 void lio_resource_remove_child(struct lio_resource* parent,
     struct lio_node* child)
 {
-    lio_srv_node_remove(parent->server.id, child->name);
+    struct lio_node* node;
+    size_t i;
+
+    for (i = 0; (node = list_get_element_at(parent->children, i)); i++) {
+        if (node == child) {
+            list_remove(parent->children, i);
+            lio_srv_node_remove(parent->server.id, child->name);
+            return;
+        }
+    }
+
+    abort();
 }
-- 
2.1.4