diff options
| -rw-r--r-- | fs/super.c | 22 | ||||
| -rw-r--r-- | include/linux/mount.h | 5 | 
2 files changed, 20 insertions, 7 deletions
diff --git a/fs/super.c b/fs/super.c index a66f66bb804..848be4fc67a 100644 --- a/fs/super.c +++ b/fs/super.c @@ -800,17 +800,13 @@ struct super_block *get_sb_single(struct file_system_type *fs_type,  EXPORT_SYMBOL(get_sb_single);  struct vfsmount * -do_kern_mount(const char *fstype, int flags, const char *name, void *data) +vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void *data)  { -	struct file_system_type *type = get_fs_type(fstype);  	struct super_block *sb = ERR_PTR(-ENOMEM);  	struct vfsmount *mnt;  	int error;  	char *secdata = NULL; -	if (!type) -		return ERR_PTR(-ENODEV); -  	mnt = alloc_vfsmnt(name);  	if (!mnt)  		goto out; @@ -841,7 +837,6 @@ do_kern_mount(const char *fstype, int flags, const char *name, void *data)  	mnt->mnt_parent = mnt;  	up_write(&sb->s_umount);  	free_secdata(secdata); -	put_filesystem(type);  	return mnt;  out_sb:  	up_write(&sb->s_umount); @@ -852,10 +847,23 @@ out_free_secdata:  out_mnt:  	free_vfsmnt(mnt);  out: -	put_filesystem(type);  	return (struct vfsmount *)sb;  } +EXPORT_SYMBOL_GPL(vfs_kern_mount); + +struct vfsmount * +do_kern_mount(const char *fstype, int flags, const char *name, void *data) +{ +	struct file_system_type *type = get_fs_type(fstype); +	struct vfsmount *mnt; +	if (!type) +		return ERR_PTR(-ENODEV); +	mnt = vfs_kern_mount(type, flags, name, data); +	put_filesystem(type); +	return mnt; +} +  EXPORT_SYMBOL_GPL(do_kern_mount);  struct vfsmount *kern_mount(struct file_system_type *type) diff --git a/include/linux/mount.h b/include/linux/mount.h index b7472ae91fa..aff68c3660f 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -73,6 +73,11 @@ extern struct vfsmount *alloc_vfsmnt(const char *name);  extern struct vfsmount *do_kern_mount(const char *fstype, int flags,  				      const char *name, void *data); +struct file_system_type; +extern struct vfsmount *vfs_kern_mount(struct file_system_type *type, +				      int flags, const char *name, +				      void *data); +  struct nameidata;  extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd,  | 
