nfs: have nfs_mount fake up a auth_flavs list when the server didn't provide it
[platform/adaptation/renesas_rcar/renesas_kernel.git] / fs / nfs / mount_clnt.c
index 91a6faf..99a4528 100644 (file)
@@ -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;