diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2010-07-25 01:48:30 +0400 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-10-29 04:16:28 -0400 | 
| commit | fc14f2fef682df677d64a145256dbd263df2aa7b (patch) | |
| tree | 74f6b939fbad959a43c04ec646cd0adc8af5f53a | |
| parent | 848b83a59b772b8f102bc5e3f1187c2fa5676959 (diff) | |
| download | olio-linux-3.10-fc14f2fef682df677d64a145256dbd263df2aa7b.tar.xz olio-linux-3.10-fc14f2fef682df677d64a145256dbd263df2aa7b.zip  | |
convert get_sb_single() users
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 10 | ||||
| -rw-r--r-- | arch/s390/hypfs/inode.c | 8 | ||||
| -rw-r--r-- | drivers/base/devtmpfs.c | 18 | ||||
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_fs.c | 14 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_fs.c | 14 | ||||
| -rw-r--r-- | drivers/isdn/capi/capifs.c | 8 | ||||
| -rw-r--r-- | drivers/misc/ibmasm/ibmasmfs.c | 9 | ||||
| -rw-r--r-- | drivers/oprofile/oprofilefs.c | 8 | ||||
| -rw-r--r-- | drivers/usb/core/inode.c | 8 | ||||
| -rw-r--r-- | drivers/usb/gadget/f_fs.c | 14 | ||||
| -rw-r--r-- | drivers/usb/gadget/inode.c | 10 | ||||
| -rw-r--r-- | drivers/xen/xenfs/super.c | 8 | ||||
| -rw-r--r-- | fs/binfmt_misc.c | 8 | ||||
| -rw-r--r-- | fs/configfs/mount.c | 8 | ||||
| -rw-r--r-- | fs/debugfs/inode.c | 8 | ||||
| -rw-r--r-- | fs/devpts/inode.c | 32 | ||||
| -rw-r--r-- | fs/fuse/control.c | 10 | ||||
| -rw-r--r-- | fs/nfsd/nfsctl.c | 8 | ||||
| -rw-r--r-- | fs/openpromfs/inode.c | 8 | ||||
| -rw-r--r-- | fs/super.c | 25 | ||||
| -rw-r--r-- | include/linux/fs.h | 3 | ||||
| -rw-r--r-- | net/sunrpc/rpc_pipe.c | 18 | ||||
| -rw-r--r-- | security/inode.c | 8 | ||||
| -rw-r--r-- | security/selinux/selinuxfs.c | 9 | ||||
| -rw-r--r-- | security/smack/smackfs.c | 12 | 
25 files changed, 147 insertions, 139 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 5dec408d670..3532b92de98 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c @@ -798,17 +798,17 @@ spufs_fill_super(struct super_block *sb, void *data, int silent)  	return spufs_create_root(sb, data);  } -static int -spufs_get_sb(struct file_system_type *fstype, int flags, -		const char *name, void *data, struct vfsmount *mnt) +static struct dentry * +spufs_mount(struct file_system_type *fstype, int flags, +		const char *name, void *data)  { -	return get_sb_single(fstype, flags, data, spufs_fill_super, mnt); +	return mount_single(fstype, flags, data, spufs_fill_super);  }  static struct file_system_type spufs_type = {  	.owner = THIS_MODULE,  	.name = "spufs", -	.get_sb = spufs_get_sb, +	.mount = spufs_mount,  	.kill_sb = kill_litter_super,  }; diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c index 74d98670be2..47cc446dab8 100644 --- a/arch/s390/hypfs/inode.c +++ b/arch/s390/hypfs/inode.c @@ -316,10 +316,10 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent)  	return 0;  } -static int hypfs_get_super(struct file_system_type *fst, int flags, -			const char *devname, void *data, struct vfsmount *mnt) +static struct dentry *hypfs_mount(struct file_system_type *fst, int flags, +			const char *devname, void *data)  { -	return get_sb_single(fst, flags, data, hypfs_fill_super, mnt); +	return mount_single(fst, flags, data, hypfs_fill_super);  }  static void hypfs_kill_super(struct super_block *sb) @@ -455,7 +455,7 @@ static const struct file_operations hypfs_file_ops = {  static struct file_system_type hypfs_type = {  	.owner		= THIS_MODULE,  	.name		= "s390_hypfs", -	.get_sb		= hypfs_get_super, +	.mount		= hypfs_mount,  	.kill_sb	= hypfs_kill_super  }; diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index af0600143d1..82bbb5967aa 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c @@ -29,33 +29,33 @@  static struct vfsmount *dev_mnt;  #if defined CONFIG_DEVTMPFS_MOUNT -static int dev_mount = 1; +static int mount_dev = 1;  #else -static int dev_mount; +static int mount_dev;  #endif  static DEFINE_MUTEX(dirlock);  static int __init mount_param(char *str)  { -	dev_mount = simple_strtoul(str, NULL, 0); +	mount_dev = simple_strtoul(str, NULL, 0);  	return 1;  }  __setup("devtmpfs.mount=", mount_param); -static int dev_get_sb(struct file_system_type *fs_type, int flags, -		      const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *dev_mount(struct file_system_type *fs_type, int flags, +		      const char *dev_name, void *data)  {  #ifdef CONFIG_TMPFS -	return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt); +	return mount_single(fs_type, flags, data, shmem_fill_super);  #else -	return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt); +	return mount_single(fs_type, flags, data, ramfs_fill_super);  #endif  }  static struct file_system_type dev_fs_type = {  	.name = "devtmpfs", -	.get_sb = dev_get_sb, +	.mount = dev_mount,  	.kill_sb = kill_litter_super,  }; @@ -351,7 +351,7 @@ int devtmpfs_mount(const char *mntdir)  {  	int err; -	if (!dev_mount) +	if (!mount_dev)  		return 0;  	if (!dev_mnt) diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index 12d5bf76302..8c8afc716b9 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c @@ -362,13 +362,13 @@ bail:  	return ret;  } -static int ipathfs_get_sb(struct file_system_type *fs_type, int flags, -			const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *ipathfs_mount(struct file_system_type *fs_type, +			int flags, const char *dev_name, void *data)  { -	int ret = get_sb_single(fs_type, flags, data, -				    ipathfs_fill_super, mnt); -	if (ret >= 0) -		ipath_super = mnt->mnt_sb; +	struct dentry *ret; +	ret = mount_single(fs_type, flags, data, ipathfs_fill_super); +	if (!IS_ERR(ret)) +		ipath_super = ret->d_sb;  	return ret;  } @@ -411,7 +411,7 @@ bail:  static struct file_system_type ipathfs_fs_type = {  	.owner =	THIS_MODULE,  	.name =		"ipathfs", -	.get_sb =	ipathfs_get_sb, +	.mount =	ipathfs_mount,  	.kill_sb =	ipathfs_kill_super,  }; diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c index 7e433d75c77..f99bddc0171 100644 --- a/drivers/infiniband/hw/qib/qib_fs.c +++ b/drivers/infiniband/hw/qib/qib_fs.c @@ -555,13 +555,13 @@ bail:  	return ret;  } -static int qibfs_get_sb(struct file_system_type *fs_type, int flags, -			const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *qibfs_mount(struct file_system_type *fs_type, int flags, +			const char *dev_name, void *data)  { -	int ret = get_sb_single(fs_type, flags, data, -				qibfs_fill_super, mnt); -	if (ret >= 0) -		qib_super = mnt->mnt_sb; +	struct dentry *ret; +	ret = mount_single(fs_type, flags, data, qibfs_fill_super); +	if (!IS_ERR(ret)) +		qib_super = ret->d_sb;  	return ret;  } @@ -603,7 +603,7 @@ int qibfs_remove(struct qib_devdata *dd)  static struct file_system_type qibfs_fs_type = {  	.owner =        THIS_MODULE,  	.name =         "ipathfs", -	.get_sb =       qibfs_get_sb, +	.mount =        qibfs_mount,  	.kill_sb =      qibfs_kill_super,  }; diff --git a/drivers/isdn/capi/capifs.c b/drivers/isdn/capi/capifs.c index 2b83850997c..b4faed7fe0d 100644 --- a/drivers/isdn/capi/capifs.c +++ b/drivers/isdn/capi/capifs.c @@ -125,16 +125,16 @@ fail:  	return -ENOMEM;  } -static int capifs_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *capifs_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, capifs_fill_super, mnt); +	return mount_single(fs_type, flags, data, capifs_fill_super);  }  static struct file_system_type capifs_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "capifs", -	.get_sb		= capifs_get_sb, +	.mount		= capifs_mount,  	.kill_sb	= kill_anon_super,  }; diff --git a/drivers/misc/ibmasm/ibmasmfs.c b/drivers/misc/ibmasm/ibmasmfs.c index 0a53500636c..d2d5d23416d 100644 --- a/drivers/misc/ibmasm/ibmasmfs.c +++ b/drivers/misc/ibmasm/ibmasmfs.c @@ -91,11 +91,10 @@ static void ibmasmfs_create_files (struct super_block *sb, struct dentry *root);  static int ibmasmfs_fill_super (struct super_block *sb, void *data, int silent); -static int ibmasmfs_get_super(struct file_system_type *fst, -			int flags, const char *name, void *data, -			struct vfsmount *mnt) +static struct dentry *ibmasmfs_mount(struct file_system_type *fst, +			int flags, const char *name, void *data)  { -	return get_sb_single(fst, flags, data, ibmasmfs_fill_super, mnt); +	return mount_single(fst, flags, data, ibmasmfs_fill_super);  }  static const struct super_operations ibmasmfs_s_ops = { @@ -108,7 +107,7 @@ static const struct file_operations *ibmasmfs_dir_ops = &simple_dir_operations;  static struct file_system_type ibmasmfs_type = {  	.owner          = THIS_MODULE,  	.name           = "ibmasmfs", -	.get_sb         = ibmasmfs_get_super, +	.mount          = ibmasmfs_mount,  	.kill_sb        = kill_litter_super,  }; diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c index 449de59bf35..e9ff6f7770b 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c @@ -259,17 +259,17 @@ static int oprofilefs_fill_super(struct super_block *sb, void *data, int silent)  } -static int oprofilefs_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *oprofilefs_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, oprofilefs_fill_super, mnt); +	return mount_single(fs_type, flags, data, oprofilefs_fill_super);  }  static struct file_system_type oprofilefs_type = {  	.owner		= THIS_MODULE,  	.name		= "oprofilefs", -	.get_sb		= oprofilefs_get_sb, +	.mount		= oprofilefs_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/drivers/usb/core/inode.c b/drivers/usb/core/inode.c index e2f63c0ea09..9819a4cc3b2 100644 --- a/drivers/usb/core/inode.c +++ b/drivers/usb/core/inode.c @@ -574,16 +574,16 @@ static void fs_remove_file (struct dentry *dentry)  /* --------------------------------------------------------------------- */ -static int usb_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *usb_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, usbfs_fill_super, mnt); +	return mount_single(fs_type, flags, data, usbfs_fill_super);  }  static struct file_system_type usb_fs_type = {  	.owner =	THIS_MODULE,  	.name =		"usbfs", -	.get_sb =	usb_get_sb, +	.mount =	usb_mount,  	.kill_sb =	kill_litter_super,  }; diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index f276e9594f0..4a830df4fc3 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c @@ -1176,9 +1176,9 @@ invalid:  /* "mount -t functionfs dev_name /dev/function" ends up here */ -static int -ffs_fs_get_sb(struct file_system_type *t, int flags, -	      const char *dev_name, void *opts, struct vfsmount *mnt) +static struct dentry * +ffs_fs_mount(struct file_system_type *t, int flags, +	      const char *dev_name, void *opts)  {  	struct ffs_sb_fill_data data = {  		.perms = { @@ -1194,14 +1194,14 @@ ffs_fs_get_sb(struct file_system_type *t, int flags,  	ret = functionfs_check_dev_callback(dev_name);  	if (unlikely(ret < 0)) -		return ret; +		return ERR_PTR(ret);  	ret = ffs_fs_parse_opts(&data, opts);  	if (unlikely(ret < 0)) -		return ret; +		return ERR_PTR(ret);  	data.dev_name = dev_name; -	return get_sb_single(t, flags, &data, ffs_sb_fill, mnt); +	return mount_single(t, flags, &data, ffs_sb_fill);  }  static void @@ -1220,7 +1220,7 @@ ffs_fs_kill_sb(struct super_block *sb)  static struct file_system_type ffs_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "functionfs", -	.get_sb		= ffs_fs_get_sb, +	.mount		= ffs_fs_mount,  	.kill_sb	= ffs_fs_kill_sb,  }; diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c index ba145e7fbe0..3ed73f49cf1 100644 --- a/drivers/usb/gadget/inode.c +++ b/drivers/usb/gadget/inode.c @@ -2097,11 +2097,11 @@ enomem0:  }  /* "mount -t gadgetfs path /dev/gadget" ends up here */ -static int -gadgetfs_get_sb (struct file_system_type *t, int flags, -		const char *path, void *opts, struct vfsmount *mnt) +static struct dentry * +gadgetfs_mount (struct file_system_type *t, int flags, +		const char *path, void *opts)  { -	return get_sb_single (t, flags, opts, gadgetfs_fill_super, mnt); +	return mount_single (t, flags, opts, gadgetfs_fill_super);  }  static void @@ -2119,7 +2119,7 @@ gadgetfs_kill_sb (struct super_block *sb)  static struct file_system_type gadgetfs_type = {  	.owner		= THIS_MODULE,  	.name		= shortname, -	.get_sb		= gadgetfs_get_sb, +	.mount		= gadgetfs_mount,  	.kill_sb	= gadgetfs_kill_sb,  }; diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c index d6662b789b6..f6339d11d59 100644 --- a/drivers/xen/xenfs/super.c +++ b/drivers/xen/xenfs/super.c @@ -121,17 +121,17 @@ static int xenfs_fill_super(struct super_block *sb, void *data, int silent)  	return rc;  } -static int xenfs_get_sb(struct file_system_type *fs_type, +static int xenfs_mount(struct file_system_type *fs_type,  			int flags, const char *dev_name, -			void *data, struct vfsmount *mnt) +			void *data)  { -	return get_sb_single(fs_type, flags, data, xenfs_fill_super, mnt); +	return mount_single(fs_type, flags, data, xenfs_fill_super);  }  static struct file_system_type xenfs_type = {  	.owner =	THIS_MODULE,  	.name =		"xenfs", -	.get_sb =	xenfs_get_sb, +	.mount =	xenfs_mount,  	.kill_sb =	kill_litter_super,  }; diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c index 29990f0eee0..1befe2ec818 100644 --- a/fs/binfmt_misc.c +++ b/fs/binfmt_misc.c @@ -706,10 +706,10 @@ static int bm_fill_super(struct super_block * sb, void * data, int silent)  	return err;  } -static int bm_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *bm_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, bm_fill_super, mnt); +	return mount_single(fs_type, flags, data, bm_fill_super);  }  static struct linux_binfmt misc_format = { @@ -720,7 +720,7 @@ static struct linux_binfmt misc_format = {  static struct file_system_type bm_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "binfmt_misc", -	.get_sb		= bm_get_sb, +	.mount		= bm_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c index 8c8d64230c2..7d3607febe1 100644 --- a/fs/configfs/mount.c +++ b/fs/configfs/mount.c @@ -104,16 +104,16 @@ static int configfs_fill_super(struct super_block *sb, void *data, int silent)  	return 0;  } -static int configfs_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *configfs_do_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, configfs_fill_super, mnt); +	return mount_single(fs_type, flags, data, configfs_fill_super);  }  static struct file_system_type configfs_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "configfs", -	.get_sb		= configfs_get_sb, +	.mount		= configfs_do_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index a4ed8380e98..37a8ca7c122 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -135,17 +135,17 @@ static int debug_fill_super(struct super_block *sb, void *data, int silent)  	return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files);  } -static int debug_get_sb(struct file_system_type *fs_type, +static struct dentry *debug_mount(struct file_system_type *fs_type,  			int flags, const char *dev_name, -			void *data, struct vfsmount *mnt) +			void *data)  { -	return get_sb_single(fs_type, flags, data, debug_fill_super, mnt); +	return mount_single(fs_type, flags, data, debug_fill_super);  }  static struct file_system_type debug_fs_type = {  	.owner =	THIS_MODULE,  	.name =		"debugfs", -	.get_sb =	debug_get_sb, +	.mount =	debug_mount,  	.kill_sb =	kill_litter_super,  }; diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c index 8b3ffd5b523..1bb547c9cad 100644 --- a/fs/devpts/inode.c +++ b/fs/devpts/inode.c @@ -331,7 +331,7 @@ static int compare_init_pts_sb(struct super_block *s, void *p)  }  /* - * devpts_get_sb() + * devpts_mount()   *   *     If the '-o newinstance' mount option was specified, mount a new   *     (private) instance of devpts.  PTYs created in this instance are @@ -345,20 +345,20 @@ static int compare_init_pts_sb(struct super_block *s, void *p)   *     semantics in devpts while preserving backward compatibility of the   *     current 'single-namespace' semantics. i.e all mounts of devpts   *     without the 'newinstance' mount option should bind to the initial - *     kernel mount, like get_sb_single(). + *     kernel mount, like mount_single().   *   *     Mounts with 'newinstance' option create a new, private namespace.   *   *     NOTE:   * - *     For single-mount semantics, devpts cannot use get_sb_single(), - *     because get_sb_single()/sget() find and use the super-block from + *     For single-mount semantics, devpts cannot use mount_single(), + *     because mount_single()/sget() find and use the super-block from   *     the most recent mount of devpts. But that recent mount may be a - *     'newinstance' mount and get_sb_single() would pick the newinstance + *     'newinstance' mount and mount_single() would pick the newinstance   *     super-block instead of the initial super-block.   */ -static int devpts_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *devpts_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  {  	int error;  	struct pts_mount_opts opts; @@ -366,7 +366,7 @@ static int devpts_get_sb(struct file_system_type *fs_type,  	error = parse_mount_options(data, PARSE_MOUNT, &opts);  	if (error) -		return error; +		return ERR_PTR(error);  	if (opts.newinstance)  		s = sget(fs_type, NULL, set_anon_super, NULL); @@ -374,7 +374,7 @@ static int devpts_get_sb(struct file_system_type *fs_type,  		s = sget(fs_type, compare_init_pts_sb, set_anon_super, NULL);  	if (IS_ERR(s)) -		return PTR_ERR(s); +		return ERR_CAST(s);  	if (!s->s_root) {  		s->s_flags = flags; @@ -390,13 +390,11 @@ static int devpts_get_sb(struct file_system_type *fs_type,  	if (error)  		goto out_undo_sget; -	simple_set_mnt(mnt, s); - -	return 0; +	return dget(s->s_root);  out_undo_sget:  	deactivate_locked_super(s); -	return error; +	return ERR_PTR(error);  }  #else @@ -404,10 +402,10 @@ out_undo_sget:   * This supports only the legacy single-instance semantics (no   * multiple-instance semantics)   */ -static int devpts_get_sb(struct file_system_type *fs_type, int flags, -		const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *devpts_mount(struct file_system_type *fs_type, int flags, +		const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, devpts_fill_super, mnt); +	return mount_single(fs_type, flags, data, devpts_fill_super);  }  #endif @@ -421,7 +419,7 @@ static void devpts_kill_sb(struct super_block *sb)  static struct file_system_type devpts_fs_type = {  	.name		= "devpts", -	.get_sb		= devpts_get_sb, +	.mount		= devpts_mount,  	.kill_sb	= devpts_kill_sb,  }; diff --git a/fs/fuse/control.c b/fs/fuse/control.c index 4eba07661e5..85542a7daf4 100644 --- a/fs/fuse/control.c +++ b/fs/fuse/control.c @@ -322,12 +322,10 @@ static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent)  	return 0;  } -static int fuse_ctl_get_sb(struct file_system_type *fs_type, int flags, -			const char *dev_name, void *raw_data, -			struct vfsmount *mnt) +static struct dentry *fuse_ctl_mount(struct file_system_type *fs_type, +			int flags, const char *dev_name, void *raw_data)  { -	return get_sb_single(fs_type, flags, raw_data, -				fuse_ctl_fill_super, mnt); +	return mount_single(fs_type, flags, raw_data, fuse_ctl_fill_super);  }  static void fuse_ctl_kill_sb(struct super_block *sb) @@ -346,7 +344,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb)  static struct file_system_type fuse_ctl_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "fusectl", -	.get_sb		= fuse_ctl_get_sb, +	.mount		= fuse_ctl_mount,  	.kill_sb	= fuse_ctl_kill_sb,  }; diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index d6dc3f61f8b..4514ebbee4d 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -1405,16 +1405,16 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)  	return simple_fill_super(sb, 0x6e667364, nfsd_files);  } -static int nfsd_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *nfsd_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, nfsd_fill_super, mnt); +	return mount_single(fs_type, flags, data, nfsd_fill_super);  }  static struct file_system_type nfsd_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "nfsd", -	.get_sb		= nfsd_get_sb, +	.mount		= nfsd_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c index ffcd04f0012..ddb1f41376e 100644 --- a/fs/openpromfs/inode.c +++ b/fs/openpromfs/inode.c @@ -415,16 +415,16 @@ out_no_root:  	return ret;  } -static int openprom_get_sb(struct file_system_type *fs_type, -	int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *openprom_mount(struct file_system_type *fs_type, +	int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, openprom_fill_super, mnt); +	return mount_single(fs_type, flags, data, openprom_fill_super)  }  static struct file_system_type openprom_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "openpromfs", -	.get_sb		= openprom_get_sb, +	.mount		= openprom_mount,  	.kill_sb	= kill_anon_super,  }; diff --git a/fs/super.c b/fs/super.c index 40989e9a260..6f021a171ac 100644 --- a/fs/super.c +++ b/fs/super.c @@ -900,29 +900,42 @@ static int compare_single(struct super_block *s, void *p)  	return 1;  } -int get_sb_single(struct file_system_type *fs_type, +struct dentry *mount_single(struct file_system_type *fs_type,  	int flags, void *data, -	int (*fill_super)(struct super_block *, void *, int), -	struct vfsmount *mnt) +	int (*fill_super)(struct super_block *, void *, int))  {  	struct super_block *s;  	int error;  	s = sget(fs_type, compare_single, set_anon_super, NULL);  	if (IS_ERR(s)) -		return PTR_ERR(s); +		return ERR_CAST(s);  	if (!s->s_root) {  		s->s_flags = flags;  		error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);  		if (error) {  			deactivate_locked_super(s); -			return error; +			return ERR_PTR(error);  		}  		s->s_flags |= MS_ACTIVE;  	} else {  		do_remount_sb(s, flags, data, 0);  	} -	simple_set_mnt(mnt, s); +	return dget(s->s_root); +} +EXPORT_SYMBOL(mount_single); + +int get_sb_single(struct file_system_type *fs_type, +	int flags, void *data, +	int (*fill_super)(struct super_block *, void *, int), +	struct vfsmount *mnt) +{ +	struct dentry *root; +	root = mount_single(fs_type, flags, data, fill_super); +	if (IS_ERR(root)) +		return PTR_ERR(root); +	mnt->mnt_root = root; +	mnt->mnt_sb = root->d_sb;  	return 0;  } diff --git a/include/linux/fs.h b/include/linux/fs.h index 2fab5a24ca5..0aa2f1202af 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1799,6 +1799,9 @@ extern int get_sb_bdev(struct file_system_type *fs_type,  	int flags, const char *dev_name, void *data,  	int (*fill_super)(struct super_block *, void *, int),  	struct vfsmount *mnt); +extern struct dentry *mount_single(struct file_system_type *fs_type, +	int flags, void *data, +	int (*fill_super)(struct super_block *, void *, int));  extern int get_sb_single(struct file_system_type *fs_type,  	int flags, void *data,  	int (*fill_super)(struct super_block *, void *, int), diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 7df92d237cb..10a17a37ec4 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -28,7 +28,7 @@  #include <linux/sunrpc/rpc_pipe_fs.h>  #include <linux/sunrpc/cache.h> -static struct vfsmount *rpc_mount __read_mostly; +static struct vfsmount *rpc_mnt __read_mostly;  static int rpc_mount_count;  static struct file_system_type rpc_pipe_fs_type; @@ -417,16 +417,16 @@ struct vfsmount *rpc_get_mount(void)  {  	int err; -	err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mount, &rpc_mount_count); +	err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mnt, &rpc_mount_count);  	if (err != 0)  		return ERR_PTR(err); -	return rpc_mount; +	return rpc_mnt;  }  EXPORT_SYMBOL_GPL(rpc_get_mount);  void rpc_put_mount(void)  { -	simple_release_fs(&rpc_mount, &rpc_mount_count); +	simple_release_fs(&rpc_mnt, &rpc_mount_count);  }  EXPORT_SYMBOL_GPL(rpc_put_mount); @@ -1018,17 +1018,17 @@ rpc_fill_super(struct super_block *sb, void *data, int silent)  	return 0;  } -static int -rpc_get_sb(struct file_system_type *fs_type, -		int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry * +rpc_mount(struct file_system_type *fs_type, +		int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, rpc_fill_super, mnt); +	return mount_single(fs_type, flags, data, rpc_fill_super);  }  static struct file_system_type rpc_pipe_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "rpc_pipefs", -	.get_sb		= rpc_get_sb, +	.mount		= rpc_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/security/inode.c b/security/inode.c index cb8f47c66a5..c4df2fbebe6 100644 --- a/security/inode.c +++ b/security/inode.c @@ -131,17 +131,17 @@ static int fill_super(struct super_block *sb, void *data, int silent)  	return simple_fill_super(sb, SECURITYFS_MAGIC, files);  } -static int get_sb(struct file_system_type *fs_type, +static struct dentry *get_sb(struct file_system_type *fs_type,  		  int flags, const char *dev_name, -		  void *data, struct vfsmount *mnt) +		  void *data)  { -	return get_sb_single(fs_type, flags, data, fill_super, mnt); +	return mount_single(fs_type, flags, data, fill_super);  }  static struct file_system_type fs_type = {  	.owner =	THIS_MODULE,  	.name =		"securityfs", -	.get_sb =	get_sb, +	.mount =	get_sb,  	.kill_sb =	kill_litter_super,  }; diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index 55a755c1a1b..073fd5b0a53 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -1909,16 +1909,15 @@ err:  	goto out;  } -static int sel_get_sb(struct file_system_type *fs_type, -		      int flags, const char *dev_name, void *data, -		      struct vfsmount *mnt) +static struct dentry *sel_mount(struct file_system_type *fs_type, +		      int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, sel_fill_super, mnt); +	return mount_single(fs_type, flags, data, sel_fill_super);  }  static struct file_system_type sel_fs_type = {  	.name		= "selinuxfs", -	.get_sb		= sel_get_sb, +	.mount		= sel_mount,  	.kill_sb	= kill_litter_super,  }; diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 7512502d016..dc1fd6239f2 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c @@ -1310,27 +1310,25 @@ static int smk_fill_super(struct super_block *sb, void *data, int silent)  }  /** - * smk_get_sb - get the smackfs superblock + * smk_mount - get the smackfs superblock   * @fs_type: passed along without comment   * @flags: passed along without comment   * @dev_name: passed along without comment   * @data: passed along without comment - * @mnt: passed along without comment   *   * Just passes everything along.   *   * Returns what the lower level code does.   */ -static int smk_get_sb(struct file_system_type *fs_type, -		      int flags, const char *dev_name, void *data, -		      struct vfsmount *mnt) +static struct dentry *smk_mount(struct file_system_type *fs_type, +		      int flags, const char *dev_name, void *data)  { -	return get_sb_single(fs_type, flags, data, smk_fill_super, mnt); +	return mount_single(fs_type, flags, data, smk_fill_super);  }  static struct file_system_type smk_fs_type = {  	.name		= "smackfs", -	.get_sb		= smk_get_sb, +	.mount		= smk_mount,  	.kill_sb	= kill_litter_super,  };  |