diff --git a/lib/fuse.c b/lib/fuse.c index 2a88918..34a46c3 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -242,50 +242,7 @@ static void fuse_unregister_module(struct fuse_module *m) static int fuse_load_so_module(const char *module) { - int ret = -1; - char *tmp; - struct fusemod_so *so; - fuse_module_factory_t *factory; - - tmp = malloc(strlen(module) + 64); - if (!tmp) { - fuse_log(FUSE_LOG_ERR, "fuse: memory allocation failed\n"); - return -1; - } - sprintf(tmp, "libfusemod_%s.so", module); - so = calloc(1, sizeof(struct fusemod_so)); - if (!so) { - fuse_log(FUSE_LOG_ERR, "fuse: failed to allocate module so\n"); - goto out; - } - - so->handle = dlopen(tmp, RTLD_NOW); - if (so->handle == NULL) { - fuse_log(FUSE_LOG_ERR, "fuse: dlopen(%s) failed: %s\n", - tmp, dlerror()); - goto out_free_so; - } - - sprintf(tmp, "fuse_module_%s_factory", module); - factory = (fuse_module_factory_t*)dlsym(so->handle, tmp); - if (factory == NULL) { - fuse_log(FUSE_LOG_ERR, "fuse: symbol <%s> not found in module: %s\n", - tmp, dlerror()); - goto out_dlclose; - } - ret = fuse_register_module(module, *factory, so); - if (ret) - goto out_dlclose; - -out: - free(tmp); - return ret; - -out_dlclose: - dlclose(so->handle); -out_free_so: - free(so); - goto out; + return -1; } static struct fuse_module *fuse_find_module(const char *module) @@ -335,7 +292,6 @@ static void fuse_put_module(struct fuse_module *m) else mp = &(*mp)->next; } - dlclose(so->handle); free(so); } } else if (!m->ctr) {