fusermount improvement
diff --git a/ChangeLog b/ChangeLog
index 8ddf026..a549ab2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,11 @@
 	the kernel tree) the statfs method will receive the path within
 	the filesystem on which the stat(v)fs syscall was called.
 
+	* fusermount: try to modprobe fuse module if invoked by root and
+	unable to open device.  This is needed with udev, since the device
+	node will be created only when the module is inserted, hence
+	module autoloading won't work.  Reported by Szakacsits Szabolcs
+
 2006-07-30  Miklos Szeredi <miklos@szeredi.hu>
 
 	* fusermount: if selinux is active, restore the original file's
diff --git a/util/fusermount.c b/util/fusermount.c
index 6d3ef97..89ecb2c 100644
--- a/util/fusermount.c
+++ b/util/fusermount.c
@@ -841,14 +841,23 @@
 
 static int open_fuse_device(char **devp)
 {
-    int fd = try_open_fuse_device(devp);
-    if (fd >= 0)
+    int fd;
+
+    if (getuid() == 0) {
+        fd = try_open_fuse_device(devp);
+        if (fd >= -1)
+            return fd;
+
+        system("modprobe fuse");
+    }
+
+    fd = try_open_fuse_device(devp);
+    if (fd >= -1)
         return fd;
 
-    if (fd == -2)
-        fprintf(stderr,
-                "%s: fuse device not found, try 'modprobe fuse' first\n",
-                progname);
+    fprintf(stderr, "%s: fuse device not found, try 'modprobe fuse' first\n",
+            progname);
+
     return -1;
 }