aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--fs/fs_context.c5
-rw-r--r--fs/super.c12
2 files changed, 6 insertions, 11 deletions
diff --git a/fs/fs_context.c b/fs/fs_context.c
index bc5a5f5f1853..a47ccd5a4a78 100644
--- a/fs/fs_context.c
+++ b/fs/fs_context.c
@@ -662,11 +662,6 @@ static int legacy_get_tree(struct fs_context *fc)
struct super_block *sb;
struct dentry *root;
- if (!(fc->sb_flags & (SB_KERNMOUNT|SB_SUBMOUNT))) {
- if (!mount_capable(fc))
- return -EPERM;
- }
-
root = fc->fs_type->mount(fc->fs_type, fc->sb_flags,
fc->source, ctx->legacy_data);
if (IS_ERR(root))
diff --git a/fs/super.c b/fs/super.c
index d1e2f46bad7e..2c38541cd89f 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -514,12 +514,6 @@ struct super_block *sget_fc(struct fs_context *fc,
struct user_namespace *user_ns = fc->global ? &init_user_ns : fc->user_ns;
int err;
- if (!(fc->sb_flags & SB_KERNMOUNT) &&
- fc->purpose != FS_CONTEXT_FOR_SUBMOUNT) {
- if (!mount_capable(fc))
- return ERR_PTR(-EPERM);
- }
-
retry:
spin_lock(&sb_lock);
if (test) {
@@ -1421,6 +1415,12 @@ int vfs_get_tree(struct fs_context *fc)
if (fc->root)
return -EBUSY;
+ if (!(fc->sb_flags & SB_KERNMOUNT) &&
+ fc->purpose != FS_CONTEXT_FOR_SUBMOUNT) {
+ if (!mount_capable(fc))
+ return -EPERM;
+ }
+
/* Get the mountable root in fc->root, with a ref on the root and a ref
* on the superblock.
*/