From: Miklos Szeredi Date: Tue, 21 Sep 2004 13:40:38 +0000 (+0000) Subject: fix X-Git-Tag: fuse_1_9~9 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c2309918d4fda35c647764ee072894891fb4a21c;p=qemu-gpiodev%2Flibfuse.git fix --- diff --git a/ChangeLog b/ChangeLog index f246add..891dfd9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-21 Miklos Szeredi + + * Fix deadlock in case of memory allocation failure. Patch by + Christian Magnusson + 2004-09-16 Miklos Szeredi * Check memory allocation failures in libfuse diff --git a/lib/fuse.c b/lib/fuse.c index a207fc0..a4d547a 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -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; }