]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
NFS: Handle a zero-length auth flavor list
authorChuck Lever <chuck.lever@oracle.com>
Fri, 21 Aug 2009 21:50:30 +0000 (17:50 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 24 Aug 2009 03:43:57 +0000 (23:43 -0400)
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>
fs/nfs/super.c

index 9c85cdb353aa6d5238fe24209460e38d71592f8d..f3a95df4b95fadcf60bd09d64f91731c1fb77e02 100644 (file)
@@ -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);
 
+       /*
+        * 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
         * plenty of cases where we can get it wrong, providing