Merge tag 'fbdev-updates-for-3.4' of git://github.com/schandinat/linux-2.6
[cascardo/linux.git] / fs / configfs / mount.c
index 276e15c..aee0a7e 100644 (file)
@@ -37,8 +37,7 @@
 /* Random magic number */
 #define CONFIGFS_MAGIC 0x62656570
 
-struct vfsmount * configfs_mount = NULL;
-struct super_block * configfs_sb = NULL;
+static struct vfsmount *configfs_mount = NULL;
 struct kmem_cache *configfs_dir_cachep;
 static int configfs_mnt_count = 0;
 
@@ -77,12 +76,11 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_magic = CONFIGFS_MAGIC;
        sb->s_op = &configfs_ops;
        sb->s_time_gran = 1;
-       configfs_sb = sb;
 
        inode = configfs_new_inode(S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
-                                  &configfs_root);
+                                  &configfs_root, sb);
        if (inode) {
-               inode->i_op = &configfs_dir_inode_operations;
+               inode->i_op = &configfs_root_inode_operations;
                inode->i_fop = &configfs_dir_operations;
                /* directory inodes start off with i_nlink == 2 (for "." entry) */
                inc_nlink(inode);
@@ -91,10 +89,9 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent)
                return -ENOMEM;
        }
 
-       root = d_alloc_root(inode);
+       root = d_make_root(inode);
        if (!root) {
                pr_debug("%s: could not get root dentry!\n",__func__);
-               iput(inode);
                return -ENOMEM;
        }
        config_group_init(&configfs_root_group);
@@ -118,10 +115,11 @@ static struct file_system_type configfs_fs_type = {
        .kill_sb        = kill_litter_super,
 };
 
-int configfs_pin_fs(void)
+struct dentry *configfs_pin_fs(void)
 {
-       return simple_pin_fs(&configfs_fs_type, &configfs_mount,
+       int err = simple_pin_fs(&configfs_fs_type, &configfs_mount,
                             &configfs_mnt_count);
+       return err ? ERR_PTR(err) : configfs_mount->mnt_root;
 }
 
 void configfs_release_fs(void)