mirror of https://github.com/torvalds/linux.git
do_nfs4_mount(): switch to vfs_parse_fs_string()
Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
b28f9eba12
commit
57e62089f8
|
|
@ -149,21 +149,9 @@ static int do_nfs4_mount(struct nfs_server *server,
|
|||
struct fs_context *root_fc;
|
||||
struct vfsmount *root_mnt;
|
||||
struct dentry *dentry;
|
||||
size_t len;
|
||||
char *source;
|
||||
int ret;
|
||||
|
||||
struct fs_parameter param = {
|
||||
.key = "source",
|
||||
.type = fs_value_is_string,
|
||||
.dirfd = -1,
|
||||
};
|
||||
|
||||
struct fs_parameter param_fsc = {
|
||||
.key = "fsc",
|
||||
.type = fs_value_is_string,
|
||||
.dirfd = -1,
|
||||
};
|
||||
|
||||
if (IS_ERR(server))
|
||||
return PTR_ERR(server);
|
||||
|
||||
|
|
@ -181,15 +169,7 @@ static int do_nfs4_mount(struct nfs_server *server,
|
|||
root_ctx->server = server;
|
||||
|
||||
if (ctx->fscache_uniq) {
|
||||
len = strlen(ctx->fscache_uniq);
|
||||
param_fsc.size = len;
|
||||
param_fsc.string = kmemdup_nul(ctx->fscache_uniq, len, GFP_KERNEL);
|
||||
if (param_fsc.string == NULL) {
|
||||
put_fs_context(root_fc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
ret = vfs_parse_fs_param(root_fc, ¶m_fsc);
|
||||
kfree(param_fsc.string);
|
||||
ret = vfs_parse_fs_string(root_fc, "fsc", ctx->fscache_uniq);
|
||||
if (ret < 0) {
|
||||
put_fs_context(root_fc);
|
||||
return ret;
|
||||
|
|
@ -197,20 +177,18 @@ static int do_nfs4_mount(struct nfs_server *server,
|
|||
}
|
||||
/* We leave export_path unset as it's not used to find the root. */
|
||||
|
||||
len = strlen(hostname) + 5;
|
||||
param.string = kmalloc(len, GFP_KERNEL);
|
||||
if (param.string == NULL) {
|
||||
/* Does hostname needs to be enclosed in brackets? */
|
||||
if (strchr(hostname, ':'))
|
||||
source = kasprintf(GFP_KERNEL, "[%s]:/", hostname);
|
||||
else
|
||||
source = kasprintf(GFP_KERNEL, "%s:/", hostname);
|
||||
|
||||
if (!source) {
|
||||
put_fs_context(root_fc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Does hostname needs to be enclosed in brackets? */
|
||||
if (strchr(hostname, ':'))
|
||||
param.size = snprintf(param.string, len, "[%s]:/", hostname);
|
||||
else
|
||||
param.size = snprintf(param.string, len, "%s:/", hostname);
|
||||
ret = vfs_parse_fs_param(root_fc, ¶m);
|
||||
kfree(param.string);
|
||||
ret = vfs_parse_fs_string(root_fc, "source", source);
|
||||
kfree(source);
|
||||
if (ret < 0) {
|
||||
put_fs_context(root_fc);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue