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

[tyndur-devel] [PATCH] LostIO: Fix fuer Race-Condition beim Anlegen von neuen Knoten



! LostIO: Fix fuer Race-Condition beim Anlegen von neuen Knoten. Dabei
          wurde der Knoten erst nach dem Eintragen beim Vater-Knoten als
          Kind fertig initialisiert. Weiter hat da auch ein p/v()
	  gefehlt.

Signed-off-by: Antoine Kaufmann <toni@xxxxxxxxxx>
---
 src/modules/lib/lostio/vfstree.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/modules/lib/lostio/vfstree.c b/src/modules/lib/lostio/vfstree.c
index 9463847..96f09bf 100644
--- a/src/modules/lib/lostio/vfstree.c
+++ b/src/modules/lib/lostio/vfstree.c
@@ -217,8 +217,6 @@ bool vfstree_create_child(vfstree_node_t* parent, char* name, typeid_t type, siz
 {  
     vfstree_node_t* new_file = malloc(sizeof(vfstree_node_t));
 
-    parent->children = list_push((list_t*)parent->children, (void*) new_file);
-    parent->size++;
     new_file->type = type;
 
     new_file->name = malloc(strlen(name) + 1);
@@ -228,9 +226,15 @@ bool vfstree_create_child(vfstree_node_t* parent, char* name, typeid_t type, siz
     new_file->data  = data;
     new_file->flags = flags;
 
-    new_file->resid = next_resid++;
     new_file->children = list_create();
     new_file->parent = parent;
+
+    p();
+    new_file->resid = next_resid++;
+    parent->children = list_push((list_t*)parent->children, (void*) new_file);
+    parent->size++;
+    v();
+
     return TRUE;
 }
 
-- 
1.6.3.3