diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2007-06-22 20:41:26 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2007-06-22 20:41:26 +0000 |
commit | 37fb19c74ffed25e2dbb0ec3f84c560ff69e5fad (patch) | |
tree | fff8e719cfaa650e1641276f648c92cbc8a78338 /lib | |
parent | 782d77fbf710b6dd072ae205239ec4af68cde3e6 (diff) |
lib: fix locking when loading a filesystem module
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fuse.c | 8 | ||||
-rw-r--r-- | lib/mount.c | 10 |
2 files changed, 8 insertions, 10 deletions
@@ -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(); } diff --git a/lib/mount.c b/lib/mount.c index aa0c0cb..8c2b048 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -392,6 +392,11 @@ static int fuse_mount_sys(const char *mnt, struct mount_opts *mo, int fd; int res; + if (!mnt) { + fprintf(stderr, "fuse: missing mountpoint\n"); + return -1; + } + res = lstat(mnt, &stbuf); if (res == -1) { fprintf(stderr ,"fuse: failed to access mountpoint %s: %s\n", @@ -516,11 +521,6 @@ int fuse_kern_mount(const char *mountpoint, struct fuse_args *args) int res = -1; char *mnt_opts = NULL; - if (!mountpoint) { - fprintf(stderr, "fuse: missing mountpoint\n"); - return -1; - } - memset(&mo, 0, sizeof(mo)); mo.flags = MS_NOSUID | MS_NODEV; |