|
@@ -1691,8 +1691,8 @@ static int nfs_verify_authflavors(struct nfs_parsed_mount_data *args,
|
|
rpc_authflavor_t *server_authlist, unsigned int count)
|
|
rpc_authflavor_t *server_authlist, unsigned int count)
|
|
{
|
|
{
|
|
rpc_authflavor_t flavor = RPC_AUTH_MAXFLAVOR;
|
|
rpc_authflavor_t flavor = RPC_AUTH_MAXFLAVOR;
|
|
|
|
+ bool found_auth_null = false;
|
|
unsigned int i;
|
|
unsigned int i;
|
|
- int use_auth_null = false;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
* If the sec= mount option is used, the specified flavor or AUTH_NULL
|
|
* If the sec= mount option is used, the specified flavor or AUTH_NULL
|
|
@@ -1701,6 +1701,10 @@ static int nfs_verify_authflavors(struct nfs_parsed_mount_data *args,
|
|
* AUTH_NULL has a special meaning when it's in the server list - it
|
|
* AUTH_NULL has a special meaning when it's in the server list - it
|
|
* means that the server will ignore the rpc creds, so any flavor
|
|
* means that the server will ignore the rpc creds, so any flavor
|
|
* can be used but still use the sec= that was specified.
|
|
* can be used but still use the sec= that was specified.
|
|
|
|
+ *
|
|
|
|
+ * Note also that the MNT procedure in MNTv1 does not return a list
|
|
|
|
+ * of supported security flavors. In this case, nfs_mount() fabricates
|
|
|
|
+ * a security flavor list containing just AUTH_NULL.
|
|
*/
|
|
*/
|
|
for (i = 0; i < count; i++) {
|
|
for (i = 0; i < count; i++) {
|
|
flavor = server_authlist[i];
|
|
flavor = server_authlist[i];
|
|
@@ -1709,11 +1713,11 @@ static int nfs_verify_authflavors(struct nfs_parsed_mount_data *args,
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
if (flavor == RPC_AUTH_NULL)
|
|
if (flavor == RPC_AUTH_NULL)
|
|
- use_auth_null = true;
|
|
|
|
|
|
+ found_auth_null = true;
|
|
}
|
|
}
|
|
|
|
|
|
- if (use_auth_null) {
|
|
|
|
- flavor = RPC_AUTH_NULL;
|
|
|
|
|
|
+ if (found_auth_null) {
|
|
|
|
+ flavor = args->auth_info.flavors[0];
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|