Commit a1c7dc5d authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Al Viro

nfs: simplify nfs4_parse_monolithic

Remove a level of indentation for the version 1 mount data parsing, and
simplify the NULL data case a little bit as well.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 9123e3a7
...@@ -1047,13 +1047,18 @@ static int nfs4_parse_monolithic(struct fs_context *fc, ...@@ -1047,13 +1047,18 @@ static int nfs4_parse_monolithic(struct fs_context *fc,
struct sockaddr *sap = (struct sockaddr *)&ctx->nfs_server.address; struct sockaddr *sap = (struct sockaddr *)&ctx->nfs_server.address;
char *c; char *c;
if (data == NULL) if (!data) {
goto out_no_data; if (is_remount_fc(fc))
goto done;
return nfs_invalf(fc,
"NFS4: mount program didn't pass any mount data");
}
ctx->version = 4; ctx->version = 4;
switch (data->version) { if (data->version != 1)
case 1: return generic_parse_monolithic(fc, data);
if (data->host_addrlen > sizeof(ctx->nfs_server.address)) if (data->host_addrlen > sizeof(ctx->nfs_server.address))
goto out_no_address; goto out_no_address;
if (data->host_addrlen == 0) if (data->host_addrlen == 0)
...@@ -1067,15 +1072,16 @@ static int nfs4_parse_monolithic(struct fs_context *fc, ...@@ -1067,15 +1072,16 @@ static int nfs4_parse_monolithic(struct fs_context *fc,
if (data->auth_flavourlen) { if (data->auth_flavourlen) {
rpc_authflavor_t pseudoflavor; rpc_authflavor_t pseudoflavor;
if (data->auth_flavourlen > 1) if (data->auth_flavourlen > 1)
goto out_inval_auth; goto out_inval_auth;
if (copy_from_user(&pseudoflavor, if (copy_from_user(&pseudoflavor, data->auth_flavours,
data->auth_flavours,
sizeof(pseudoflavor))) sizeof(pseudoflavor)))
return -EFAULT; return -EFAULT;
ctx->selected_flavor = pseudoflavor; ctx->selected_flavor = pseudoflavor;
} else } else {
ctx->selected_flavor = RPC_AUTH_UNIX; ctx->selected_flavor = RPC_AUTH_UNIX;
}
c = strndup_user(data->hostname.data, NFS4_MAXNAMLEN); c = strndup_user(data->hostname.data, NFS4_MAXNAMLEN);
if (IS_ERR(c)) if (IS_ERR(c))
...@@ -1111,24 +1117,9 @@ static int nfs4_parse_monolithic(struct fs_context *fc, ...@@ -1111,24 +1117,9 @@ static int nfs4_parse_monolithic(struct fs_context *fc,
nfs_validate_transport_protocol(ctx); nfs_validate_transport_protocol(ctx);
if (ctx->nfs_server.protocol == XPRT_TRANSPORT_UDP) if (ctx->nfs_server.protocol == XPRT_TRANSPORT_UDP)
goto out_invalid_transport_udp; goto out_invalid_transport_udp;
done:
break;
default:
goto generic;
}
ctx->skip_reconfig_option_check = true;
return 0;
generic:
return generic_parse_monolithic(fc, data);
out_no_data:
if (is_remount_fc(fc)) {
ctx->skip_reconfig_option_check = true; ctx->skip_reconfig_option_check = true;
return 0; return 0;
}
return nfs_invalf(fc, "NFS4: mount program didn't pass any mount data");
out_inval_auth: out_inval_auth:
return nfs_invalf(fc, "NFS4: Invalid number of RPC auth flavours %d", return nfs_invalf(fc, "NFS4: Invalid number of RPC auth flavours %d",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment