Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46058d46 authored by Bryan Schumaker's avatar Bryan Schumaker Committed by Trond Myklebust
Browse files

NFS: Allocate parsed mount data directly to the nfs_mount_info structure

parent d72c727c
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -2468,7 +2468,6 @@ static struct dentry *nfs_fs_mount_common(struct file_system_type *fs_type,
static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
	int flags, const char *dev_name, void *raw_data)
{
	struct nfs_parsed_mount_data *data = NULL;
	struct nfs_mount_info mount_info = {
		.fill_super = nfs_fill_super,
		.set_security = nfs_set_sb_security,
@@ -2477,30 +2476,29 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
	struct dentry *mntroot = ERR_PTR(-ENOMEM);
	int error;

	data = nfs_alloc_parsed_mount_data();
	mount_info.parsed = nfs_alloc_parsed_mount_data();
	mntfh = nfs_alloc_fhandle();
	if (data == NULL || mntfh == NULL)
	if (mount_info.parsed == NULL || mntfh == NULL)
		goto out;

	/* Validate the mount data */
	error = nfs_validate_mount_data(fs_type, raw_data, data, mntfh, dev_name);
	error = nfs_validate_mount_data(fs_type, raw_data, mount_info.parsed, mntfh, dev_name);
	if (error == NFS_TEXT_DATA)
		error = nfs_validate_text_mount_data(raw_data, data, dev_name);
		error = nfs_validate_text_mount_data(raw_data, mount_info.parsed, dev_name);
	if (error < 0) {
		mntroot = ERR_PTR(error);
		goto out;
	}
	mount_info.parsed = data;

#ifdef CONFIG_NFS_V4
	if (data->version == 4)
		mntroot = nfs4_try_mount(flags, dev_name, data);
	if (mount_info.parsed->version == 4)
		mntroot = nfs4_try_mount(flags, dev_name, mount_info.parsed);
	else
#endif	/* CONFIG_NFS_V4 */
		mntroot = nfs_try_mount(flags, dev_name, mntfh, &mount_info);

out:
	nfs_free_parsed_mount_data(data);
	nfs_free_parsed_mount_data(mount_info.parsed);
	nfs_free_fhandle(mntfh);
	return mntroot;
}