diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/super.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 2f7e7f20c917..4bbdbf6de417 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -2125,6 +2125,8 @@ static int nfs4_validate_mount_data(void *options, | |||
2125 | args->acdirmin = NFS_DEF_ACDIRMIN; | 2125 | args->acdirmin = NFS_DEF_ACDIRMIN; |
2126 | args->acdirmax = NFS_DEF_ACDIRMAX; | 2126 | args->acdirmax = NFS_DEF_ACDIRMAX; |
2127 | args->nfs_server.port = NFS_PORT; /* 2049 unless user set port= */ | 2127 | args->nfs_server.port = NFS_PORT; /* 2049 unless user set port= */ |
2128 | args->auth_flavors[0] = RPC_AUTH_UNIX; | ||
2129 | args->auth_flavor_len = 0; | ||
2128 | 2130 | ||
2129 | switch (data->version) { | 2131 | switch (data->version) { |
2130 | case 1: | 2132 | case 1: |
@@ -2140,18 +2142,13 @@ static int nfs4_validate_mount_data(void *options, | |||
2140 | &args->nfs_server.address)) | 2142 | &args->nfs_server.address)) |
2141 | goto out_no_address; | 2143 | goto out_no_address; |
2142 | 2144 | ||
2143 | switch (data->auth_flavourlen) { | 2145 | if (data->auth_flavourlen) { |
2144 | case 0: | 2146 | if (data->auth_flavourlen > 1) |
2145 | args->auth_flavors[0] = RPC_AUTH_UNIX; | 2147 | goto out_inval_auth; |
2146 | break; | ||
2147 | case 1: | ||
2148 | if (copy_from_user(&args->auth_flavors[0], | 2148 | if (copy_from_user(&args->auth_flavors[0], |
2149 | data->auth_flavours, | 2149 | data->auth_flavours, |
2150 | sizeof(args->auth_flavors[0]))) | 2150 | sizeof(args->auth_flavors[0]))) |
2151 | return -EFAULT; | 2151 | return -EFAULT; |
2152 | break; | ||
2153 | default: | ||
2154 | goto out_inval_auth; | ||
2155 | } | 2152 | } |
2156 | 2153 | ||
2157 | c = strndup_user(data->hostname.data, NFS4_MAXNAMLEN); | 2154 | c = strndup_user(data->hostname.data, NFS4_MAXNAMLEN); |
@@ -2203,15 +2200,8 @@ static int nfs4_validate_mount_data(void *options, | |||
2203 | 2200 | ||
2204 | nfs_validate_transport_protocol(args); | 2201 | nfs_validate_transport_protocol(args); |
2205 | 2202 | ||
2206 | switch (args->auth_flavor_len) { | 2203 | if (args->auth_flavor_len > 1) |
2207 | case 0: | ||
2208 | args->auth_flavors[0] = RPC_AUTH_UNIX; | ||
2209 | break; | ||
2210 | case 1: | ||
2211 | break; | ||
2212 | default: | ||
2213 | goto out_inval_auth; | 2204 | goto out_inval_auth; |
2214 | } | ||
2215 | 2205 | ||
2216 | if (args->client_address == NULL) | 2206 | if (args->client_address == NULL) |
2217 | goto out_no_client_address; | 2207 | goto out_no_client_address; |