NFS: Handle a zero-length auth flavor list
Some releases of Linux rpc.mountd (nfs-utils 1.1.4 and later) return an empty auth flavor list if no sec= was specified for the export. This is notably broken server behavior. The new auth flavor list checking added in a recent commit rejects this case. The OpenSolaris client does too. The broken mountd implementation is already widely deployed. To avoid a behavioral regression, the kernel's mount client skips flavor checking (ie reverts to the pre-2.6.32 behavior) if mountd returns an empty flavor list. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
405d8f8b1d
commit
5eecfde615
|
@ -1337,6 +1337,16 @@ static int nfs_walk_authlist(struct nfs_parsed_mount_data *args,
|
||||||
{
|
{
|
||||||
unsigned int i, j, server_authlist_len = *(request->auth_flav_len);
|
unsigned int i, j, server_authlist_len = *(request->auth_flav_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Certain releases of Linux's mountd return an empty
|
||||||
|
* flavor list. To prevent behavioral regression with
|
||||||
|
* these servers (ie. rejecting mounts that used to
|
||||||
|
* succeed), revert to pre-2.6.32 behavior (no checking)
|
||||||
|
* if the returned flavor list is empty.
|
||||||
|
*/
|
||||||
|
if (server_authlist_len == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We avoid sophisticated negotiating here, as there are
|
* We avoid sophisticated negotiating here, as there are
|
||||||
* plenty of cases where we can get it wrong, providing
|
* plenty of cases where we can get it wrong, providing
|
||||||
|
|
Loading…
Reference in a new issue