diff --git a/ChangeLog b/ChangeLog
index e50aac3..0e60823 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-06-22  Miklos Szeredi <miklos@szeredi.hu>
+
+	* lib: fix locking when loading a filesystem module
+
 2007-06-21  Miklos Szeredi <miklos@szeredi.hu>
 
 	* Add fs subtype support to mount.fuse
diff --git a/include/fuse.h b/include/fuse.h
index 19b38b3..dc0975a 100644
--- a/include/fuse.h
+++ b/include/fuse.h
@@ -97,9 +97,9 @@
 
     /** Create a file node
      *
-     * If the filesystem doesn't define a create() operation, mknod()
-     * will be called for creation of all non-directory, non-symlink
-     * nodes.
+     * This is called for creation of all non-directory, non-symlink
+     * nodes.  If the filesystem defines a create() method, then for
+     * regular files that will be called instead.
      */
     int (*mknod) (const char *, mode_t, dev_t);
 
@@ -722,7 +722,7 @@
 #define FUSE_REGISTER_MODULE(name_, factory_) \
 static __attribute__((constructor)) void name_ ## _register(void) \
 { \
-    static struct fuse_module mod = { .name = #name_, .factory = factory_ }; \
+    static struct fuse_module mod = { #name_, factory_, NULL, NULL, 0 }; \
     fuse_register_module(&mod); \
 }
 
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 @@
         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 @@
         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 @@
        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 @@
     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 @@
     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 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;
 
