extern struct mutex configfs_symlink_mutex;
 extern spinlock_t configfs_dirent_lock;
 
-extern struct vfsmount * configfs_mount;
 extern struct kmem_cache *configfs_dir_cachep;
 
 extern int configfs_is_root(struct config_item *item);
 extern void configfs_drop_dentry(struct configfs_dirent *sd, struct dentry *parent);
 extern int configfs_setattr(struct dentry *dentry, struct iattr *iattr);
 
-extern int configfs_pin_fs(void);
+extern struct dentry *configfs_pin_fs(void);
 extern void configfs_release_fs(void);
 
 extern struct rw_semaphore configfs_rename_sem;
 
         * Pin the configfs filesystem.  This means we can safely access
         * the root of the configfs filesystem.
         */
-       ret = configfs_pin_fs();
-       if (ret)
-               return ret;
+       root = configfs_pin_fs();
+       if (IS_ERR(root))
+               return PTR_ERR(root);
 
        /*
         * Next, lock the root directory.  We're going to check that the
         * subsystem is really registered, and so we need to lock out
         * configfs_[un]register_subsystem().
         */
-       root = configfs_mount->mnt_root;
        mutex_lock(&root->d_inode->i_mutex);
 
        root_sd = root->d_fsdata;
        struct dentry *root;
        struct configfs_dirent *sd;
 
-       err = configfs_pin_fs();
-       if (err)
-               return err;
+       root = configfs_pin_fs();
+       if (IS_ERR(root))
+               return PTR_ERR(root);
 
        if (!group->cg_item.ci_name)
                group->cg_item.ci_name = group->cg_item.ci_namebuf;
 
-       root = configfs_mount->mnt_root;
        sd = root->d_fsdata;
        link_group(to_config_group(sd->s_element), group);
 
 
 /* Random magic number */
 #define CONFIGFS_MAGIC 0x62656570
 
-struct vfsmount * configfs_mount = NULL;
+static struct vfsmount *configfs_mount = NULL;
 struct kmem_cache *configfs_dir_cachep;
 static int configfs_mnt_count = 0;
 
        .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)