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

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



On Wed, Dec 09, 2009 at 07:52:07PM +0100, Antoine Kaufmann wrote:
> ! 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.

In derselben Datei fehlt zumindest in vfstree_get_node_by_name und
vfstree_clear_node noch jeweils ein p/v bei Listenzugriffen.

Aber der Teil, der da ist, sieht vernünftig aus.

> 
> 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
> 
> _______________________________________________
> tyndur-devel mailing list
> tyndur-devel@xxxxxxxxxx
> http://list.tyndur.org/mailman/listinfo/tyndur-devel