aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-16 16:14:56 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-16 16:14:56 -0500
commit673fdfe3f0630b03f3854d0361b1232f2e5ef7fb (patch)
tree5f1c1374f786c9a9d47bde36387dea8757725238 /fs
parent73d75ba99e3bdd627275afd3fe48cc933723084b (diff)
parent8c2fabc6542d9d0f8b16bd1045c2eda59bdcde13 (diff)
Merge tag 'nfs-for-3.13-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client bugfixes: - Stable fix for data corruption when retransmitting O_DIRECT writes - Stable fix for a deep recursion/stack overflow bug in rpc_release_client - Stable fix for infinite looping when mounting a NFSv4.x volume - Fix a typo in the nfs mount option parser - Allow pNFS layouts to be compiled into the kernel when NFSv4.1 is * tag 'nfs-for-3.13-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: nfs: fix pnfs Kconfig defaults NFS: correctly report misuse of "migration" mount option. nfs: don't retry detect_trunking with RPC_AUTH_UNIX more than once SUNRPC: Avoid deep recursion in rpc_release_client SUNRPC: Fix a data corruption issue when retransmitting RPC calls
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/Kconfig6
-rw-r--r--fs/nfs/nfs4state.c7
-rw-r--r--fs/nfs/super.c2
3 files changed, 10 insertions, 5 deletions
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
index 38c1768b4142..3dece03f2fc8 100644
--- a/fs/nfs/Kconfig
+++ b/fs/nfs/Kconfig
@@ -116,17 +116,17 @@ config NFS_V4_2
116config PNFS_FILE_LAYOUT 116config PNFS_FILE_LAYOUT
117 tristate 117 tristate
118 depends on NFS_V4_1 118 depends on NFS_V4_1
119 default m 119 default NFS_V4
120 120
121config PNFS_BLOCK 121config PNFS_BLOCK
122 tristate 122 tristate
123 depends on NFS_V4_1 && BLK_DEV_DM 123 depends on NFS_V4_1 && BLK_DEV_DM
124 default m 124 default NFS_V4
125 125
126config PNFS_OBJLAYOUT 126config PNFS_OBJLAYOUT
127 tristate 127 tristate
128 depends on NFS_V4_1 && SCSI_OSD_ULD 128 depends on NFS_V4_1 && SCSI_OSD_ULD
129 default m 129 default NFS_V4
130 130
131config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN 131config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN
132 string "NFSv4.1 Implementation ID Domain" 132 string "NFSv4.1 Implementation ID Domain"
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 74a7e12e10df..059c01b67a71 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -2093,10 +2093,15 @@ again:
2093 nfs4_root_machine_cred(clp); 2093 nfs4_root_machine_cred(clp);
2094 goto again; 2094 goto again;
2095 } 2095 }
2096 if (i > 2) 2096 if (clnt->cl_auth->au_flavor == RPC_AUTH_UNIX)
2097 break; 2097 break;
2098 case -NFS4ERR_CLID_INUSE: 2098 case -NFS4ERR_CLID_INUSE:
2099 case -NFS4ERR_WRONGSEC: 2099 case -NFS4ERR_WRONGSEC:
2100 /* No point in retrying if we already used RPC_AUTH_UNIX */
2101 if (clnt->cl_auth->au_flavor == RPC_AUTH_UNIX) {
2102 status = -EPERM;
2103 break;
2104 }
2100 clnt = rpc_clone_client_set_auth(clnt, RPC_AUTH_UNIX); 2105 clnt = rpc_clone_client_set_auth(clnt, RPC_AUTH_UNIX);
2101 if (IS_ERR(clnt)) { 2106 if (IS_ERR(clnt)) {
2102 status = PTR_ERR(clnt); 2107 status = PTR_ERR(clnt);
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 317d6fc2160e..910ed906eb82 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1614,7 +1614,7 @@ static int nfs_parse_mount_options(char *raw,
1614 goto out_minorversion_mismatch; 1614 goto out_minorversion_mismatch;
1615 1615
1616 if (mnt->options & NFS_OPTION_MIGRATION && 1616 if (mnt->options & NFS_OPTION_MIGRATION &&
1617 mnt->version != 4 && mnt->minorversion != 0) 1617 (mnt->version != 4 || mnt->minorversion != 0))
1618 goto out_migration_misuse; 1618 goto out_migration_misuse;
1619 1619
1620 /* 1620 /*