From 37fb19c74ffed25e2dbb0ec3f84c560ff69e5fad Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Fri, 22 Jun 2007 20:41:26 +0000 Subject: lib: fix locking when loading a filesystem module --- lib/fuse.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'lib/fuse.c') diff --git a/lib/fuse.c b/lib/fuse.c index d756cf0..69fd737 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -161,11 +161,9 @@ static int fuse_load_so_name(const char *soname) return -1; } - pthread_mutex_lock(&fuse_context_lock); fuse_current_so = so; so->handle = dlopen(soname, RTLD_NOW); fuse_current_so = NULL; - pthread_mutex_unlock(&fuse_context_lock); if (!so->handle) { fprintf(stderr, "fuse: %s\n", dlerror()); goto err; @@ -191,9 +189,7 @@ static int fuse_load_so_module(const char *module) fprintf(stderr, "fuse: memory allocation failed\n"); return -1; } - if (soname) - sprintf(soname, "libfusemod_%s.so", module); - + sprintf(soname, "libfusemod_%s.so", module); res = fuse_load_so_name(soname); free(soname); return res; @@ -3157,6 +3153,7 @@ struct fuse *fuse_new_common(struct fuse_chan *ch, struct fuse_args *args, called on the filesystem without init being called first */ fs->op.destroy = NULL; fuse_fs_destroy(f->fs); + free(f->conf.modules); out_free: free(f); out_delete_context_key: @@ -3213,6 +3210,7 @@ void fuse_destroy(struct fuse *f) pthread_mutex_destroy(&f->lock); pthread_rwlock_destroy(&f->tree_lock); fuse_session_destroy(f->se); + free(f->conf.modules); free(f); fuse_delete_context_key(); } -- cgit v1.2.3