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

Commit fb9b02fd authored by Jeff Layton's avatar Jeff Layton Committed by Trond Myklebust
Browse files

nfs: have nfs_mount fake up a auth_flavs list when the server didn't provide it



Instead of handling this as a special case in the auth-selection code,
we can simply fake up an auth_flavs list when the server doesn't
provide it.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 294ae81d
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -139,7 +139,10 @@ struct mnt_fhstatus {
 * nfs_mount - Obtain an NFS file handle for the given host and path
 * @info: pointer to mount request arguments
 *
 * Uses default timeout parameters specified by underlying transport.
 * Uses default timeout parameters specified by underlying transport. On
 * successful return, the auth_flavs list and auth_flav_len will be populated
 * with the list from the server or a faked-up list if the server didn't
 * provide one.
 */
int nfs_mount(struct nfs_mount_request *info)
{
@@ -195,6 +198,15 @@ int nfs_mount(struct nfs_mount_request *info)
	dprintk("NFS: MNT request succeeded\n");
	status = 0;

	/*
	 * If the server didn't provide a flavor list, allow the
	 * client to try any flavor.
	 */
	if (info->version != NFS_MNT3_VERSION || *info->auth_flav_len == 0) {
		dprintk("NFS: Faking up auth_flavs list\n");
		info->auth_flavs[0] = RPC_AUTH_NULL;
		*info->auth_flav_len = 1;
	}
out:
	return status;

+0 −13
Original line number Diff line number Diff line
@@ -1619,19 +1619,6 @@ static int nfs_select_flavor(struct nfs_parsed_mount_data *args,
	unsigned int i, count = *(request->auth_flav_len);
	rpc_authflavor_t flavor;

	/*
	 * The NFSv2 MNT operation does not return a flavor list.
	 */
	if (args->mount_server.version != NFS_MNT3_VERSION)
		goto out_default;

	/*
	 * Certain releases of Linux's mountd return an empty
	 * flavor list in some cases.
	 */
	if (count == 0)
		goto out_default;

	/*
	 * If the sec= mount option is used, the specified flavor or AUTH_NULL
	 * must be in the list returned by the server.