Commit c6fe6254 authored by Miklos Szeredi's avatar Miklos Szeredi
Browse files

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: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent a9075cdb
Loading
Loading
Loading
Loading
+14 −16
Original line number Diff line number Diff line
@@ -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);
		err = ovl_get_workpath(ufs, &upperpath, &workpath);
		if (err)
			goto out_err;

	if (ufs->config.upperdir) {
		err = ovl_get_upper(ufs, &upperpath);
		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_workdir(sb, ufs, &workpath);
	}
	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;