--- subfs.c	2006-10-01 07:57:40.000000000 +0200
+++ subfs.c	2006-10-01 07:55:28.000000000 +0200
@@ -412,6 +412,11 @@
 	struct subfs_mount *newmount;
 	int ret;
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
+	struct vfsmount *mnt;
+       if (!(mnt = kmalloc(sizeof(struct vfsmount), GFP_KERNEL)))
+                return ERR_PTR(-ENOMEM);
+#endif
 	if (!(newmount = kmalloc(sizeof(struct subfs_mount), GFP_KERNEL)))
 		return ERR_PTR(-ENOMEM);
 	newmount->req_fs = NULL;
@@ -429,7 +434,13 @@
 	strcpy(newmount->helper_prog, SUBMOUNTD_PATH);
 	if ((ret = proc_opts(newmount, data)))
 		return ERR_PTR(ret);
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
+	if ( (ret = get_sb_nodev(fst, flags, data, subfs_fill_super,mnt)) !=0)
+		return ERR_PTR(ret);
+	newmount->sb= mnt->mnt_sb;
+#else
 	newmount->sb = get_sb_nodev(fst, flags, data, subfs_fill_super);
+#endif
 	newmount->sb->s_fs_info = newmount;
 	return newmount->sb;
 }

