aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/super.c14
-rw-r--r--include/linux/fs.h5
-rw-r--r--ipc/mqueue.c8
3 files changed, 12 insertions, 15 deletions
diff --git a/fs/super.c b/fs/super.c
index f6a7bf1fff2..ca696155cd9 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -715,15 +715,14 @@ static int ns_set_super(struct super_block *sb, void *data)
715 return set_anon_super(sb, NULL); 715 return set_anon_super(sb, NULL);
716} 716}
717 717
718int get_sb_ns(struct file_system_type *fs_type, int flags, void *data, 718struct dentry *mount_ns(struct file_system_type *fs_type, int flags,
719 int (*fill_super)(struct super_block *, void *, int), 719 void *data, int (*fill_super)(struct super_block *, void *, int))
720 struct vfsmount *mnt)
721{ 720{
722 struct super_block *sb; 721 struct super_block *sb;
723 722
724 sb = sget(fs_type, ns_test_super, ns_set_super, data); 723 sb = sget(fs_type, ns_test_super, ns_set_super, data);
725 if (IS_ERR(sb)) 724 if (IS_ERR(sb))
726 return PTR_ERR(sb); 725 return ERR_CAST(sb);
727 726
728 if (!sb->s_root) { 727 if (!sb->s_root) {
729 int err; 728 int err;
@@ -731,17 +730,16 @@ int get_sb_ns(struct file_system_type *fs_type, int flags, void *data,
731 err = fill_super(sb, data, flags & MS_SILENT ? 1 : 0); 730 err = fill_super(sb, data, flags & MS_SILENT ? 1 : 0);
732 if (err) { 731 if (err) {
733 deactivate_locked_super(sb); 732 deactivate_locked_super(sb);
734 return err; 733 return ERR_PTR(err);
735 } 734 }
736 735
737 sb->s_flags |= MS_ACTIVE; 736 sb->s_flags |= MS_ACTIVE;
738 } 737 }
739 738
740 simple_set_mnt(mnt, sb); 739 return dget(sb->s_root);
741 return 0;
742} 740}
743 741
744EXPORT_SYMBOL(get_sb_ns); 742EXPORT_SYMBOL(mount_ns);
745 743
746#ifdef CONFIG_BLOCK 744#ifdef CONFIG_BLOCK
747static int set_bdev_super(struct super_block *s, void *data) 745static int set_bdev_super(struct super_block *s, void *data)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 43e6cfb5cbb..4d07902bc50 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1789,9 +1789,8 @@ struct file_system_type {
1789 struct lock_class_key i_alloc_sem_key; 1789 struct lock_class_key i_alloc_sem_key;
1790}; 1790};
1791 1791
1792extern int get_sb_ns(struct file_system_type *fs_type, int flags, void *data, 1792extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags,
1793 int (*fill_super)(struct super_block *, void *, int), 1793 void *data, int (*fill_super)(struct super_block *, void *, int));
1794 struct vfsmount *mnt);
1795extern struct dentry *mount_bdev(struct file_system_type *fs_type, 1794extern struct dentry *mount_bdev(struct file_system_type *fs_type,
1796 int flags, const char *dev_name, void *data, 1795 int flags, const char *dev_name, void *data,
1797 int (*fill_super)(struct super_block *, void *, int)); 1796 int (*fill_super)(struct super_block *, void *, int));
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 3a61ffefe88..035f4399edb 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -211,13 +211,13 @@ out:
211 return error; 211 return error;
212} 212}
213 213
214static int mqueue_get_sb(struct file_system_type *fs_type, 214static struct dentry *mqueue_mount(struct file_system_type *fs_type,
215 int flags, const char *dev_name, 215 int flags, const char *dev_name,
216 void *data, struct vfsmount *mnt) 216 void *data)
217{ 217{
218 if (!(flags & MS_KERNMOUNT)) 218 if (!(flags & MS_KERNMOUNT))
219 data = current->nsproxy->ipc_ns; 219 data = current->nsproxy->ipc_ns;
220 return get_sb_ns(fs_type, flags, data, mqueue_fill_super, mnt); 220 return mount_ns(fs_type, flags, data, mqueue_fill_super);
221} 221}
222 222
223static void init_once(void *foo) 223static void init_once(void *foo)
@@ -1232,7 +1232,7 @@ static const struct super_operations mqueue_super_ops = {
1232 1232
1233static struct file_system_type mqueue_fs_type = { 1233static struct file_system_type mqueue_fs_type = {
1234 .name = "mqueue", 1234 .name = "mqueue",
1235 .get_sb = mqueue_get_sb, 1235 .mount = mqueue_mount,
1236 .kill_sb = kill_litter_super, 1236 .kill_sb = kill_litter_super,
1237}; 1237};
1238 1238