提交 c6fe6254 编写于 作者: M Miklos Szeredi

ovl: change order of setup in ovl_fill_super()

Move ovl_get_upper() immediately after ovl_get_upperpath(),
ovl_get_workdir() immediately after ovl_get_workdir() and
ovl_get_lower_layers() immediately after ovl_get_lowerstack().

Also move prepare_creds() up to where other allocations are happening.
Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
上级 a9075cdb
......@@ -1151,6 +1151,10 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
if (!ufs)
goto out;
ufs->creator_cred = cred = prepare_creds();
if (!cred)
goto out_err;
ufs->config.redirect_dir = ovl_redirect_dir_def;
ufs->config.index = ovl_index_def;
err = ovl_parse_opt((char *) data, &ufs->config);
......@@ -1176,27 +1180,25 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
if (err)
goto out_err;
err = ovl_get_workpath(ufs, &upperpath, &workpath);
err = ovl_get_upper(ufs, &upperpath);
if (err)
goto out_err;
sb->s_stack_depth = upperpath.mnt->mnt_sb->s_stack_depth;
}
err = ovl_get_lowerstack(sb, ufs, &stack, &numlower);
if (err)
goto out_err;
if (ufs->config.upperdir) {
err = ovl_get_upper(ufs, &upperpath);
err = ovl_get_workpath(ufs, &upperpath, &workpath);
if (err)
goto out_err;
sb->s_time_gran = ufs->upper_mnt->mnt_sb->s_time_gran;
err = ovl_get_workdir(sb, ufs, &workpath);
if (err)
goto out_err;
sb->s_stack_depth = ufs->upper_mnt->mnt_sb->s_stack_depth;
sb->s_time_gran = ufs->upper_mnt->mnt_sb->s_time_gran;
}
err = ovl_get_lowerstack(sb, ufs, &stack, &numlower);
if (err)
goto out_err;
err = ovl_get_lower_layers(ufs, stack, numlower);
if (err)
......@@ -1228,11 +1230,6 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
if (!ufs->indexdir)
ufs->config.index = false;
err = -ENOMEM;
ufs->creator_cred = cred = prepare_creds();
if (!cred)
goto out_err;
/* Never override disk quota limits or use reserved space */
cap_lower(cred->cap_effective, CAP_SYS_RESOURCE);
......@@ -1242,6 +1239,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
sb->s_fs_info = ufs;
sb->s_flags |= MS_POSIXACL | MS_NOREMOTELOCK;
err = -ENOMEM;
root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, 0));
if (!root_dentry)
goto out_err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册