fix
authorMiklos Szeredi <miklos@szeredi.hu>
Tue, 21 Sep 2004 13:40:38 +0000 (13:40 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Tue, 21 Sep 2004 13:40:38 +0000 (13:40 +0000)
ChangeLog
lib/fuse.c

index f246add72fcb2ad83a933ad56f28ef177ad2f85d..891dfd90dc16dae6524eefa3ae5aba12534e7a62 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-21  Miklos Szeredi <miklos@szeredi.hu>
+
+       * Fix deadlock in case of memory allocation failure.  Patch by
+       Christian Magnusson
+       
 2004-09-16  Miklos Szeredi <miklos@szeredi.hu>
 
        * Check memory allocation failures in libfuse
index a207fc0b0f3c393b26400c065c270812da024e8e..a4d547a6f8e170ce1237d43857fc5cb7e3aaa2cb 100644 (file)
@@ -215,7 +215,7 @@ static struct node *find_node(struct fuse *f, fino_t parent, char *name,
 
     node = (struct node *) calloc(1, sizeof(struct node));
     if (node == NULL)
-        return NULL;
+        goto out_err;
 
     node->mode = mode;
     node->rdev = rdev;
@@ -225,12 +225,14 @@ static struct node *find_node(struct fuse *f, fino_t parent, char *name,
     node->generation = f->generation;
     if (hash_name(f, node, parent, name) == -1) {
         free(node);
-        return NULL;
+        node = NULL;
+        goto out_err;
     }
     hash_ino(f, node);
 
 out:
+ out:
     node->version = version;
+ out_err:
     pthread_mutex_unlock(&f->lock);
     return node;
 }