diff options
author | Bryan Schumaker <bjschuma@netapp.com> | 2011-04-13 14:31:30 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-04-13 15:12:23 -0400 |
commit | 9b7160c55a41dd2fec3d467f979e55782d3f92ad (patch) | |
tree | 5a0d71d9a9ed1cfee60014b3b10d71232dee0a09 /fs/nfs | |
parent | 801a16dc7b5c146f7980a0c61c30cef3ba93344d (diff) |
NFS: don't negotiate when user specifies sec flavor
We were always attempting sec flavor negotiation, even if the user
told us a specific sec flavor to use. If that sec flavor fails,
we should return an error rather than continuing with sec flavor
negotiation.
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 3 | ||||
-rw-r--r-- | fs/nfs/super.c | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 7e27ebf5be5d..b8e1ac69b743 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <linux/nfs4.h> | 46 | #include <linux/nfs4.h> |
47 | #include <linux/nfs_fs.h> | 47 | #include <linux/nfs_fs.h> |
48 | #include <linux/nfs_page.h> | 48 | #include <linux/nfs_page.h> |
49 | #include <linux/nfs_mount.h> | ||
49 | #include <linux/namei.h> | 50 | #include <linux/namei.h> |
50 | #include <linux/mount.h> | 51 | #include <linux/mount.h> |
51 | #include <linux/module.h> | 52 | #include <linux/module.h> |
@@ -2234,7 +2235,7 @@ static int nfs4_proc_get_root(struct nfs_server *server, struct nfs_fh *fhandle, | |||
2234 | struct nfs_fsinfo *info) | 2235 | struct nfs_fsinfo *info) |
2235 | { | 2236 | { |
2236 | int status = nfs4_lookup_root(server, fhandle, info); | 2237 | int status = nfs4_lookup_root(server, fhandle, info); |
2237 | if (status == -EPERM) | 2238 | if ((status == -EPERM) && !(server->flags & NFS_MOUNT_SECFLAVOUR)) |
2238 | status = nfs4_find_root_sec(server, fhandle, info); | 2239 | status = nfs4_find_root_sec(server, fhandle, info); |
2239 | if (status == 0) | 2240 | if (status == 0) |
2240 | status = nfs4_server_capabilities(server, fhandle); | 2241 | status = nfs4_server_capabilities(server, fhandle); |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 685a8a7bd17b..75bcc3f0e0b5 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -1004,6 +1004,7 @@ static int nfs_parse_security_flavors(char *value, | |||
1004 | return 0; | 1004 | return 0; |
1005 | } | 1005 | } |
1006 | 1006 | ||
1007 | mnt->flags |= NFS_MOUNT_SECFLAVOUR; | ||
1007 | mnt->auth_flavor_len = 1; | 1008 | mnt->auth_flavor_len = 1; |
1008 | return 1; | 1009 | return 1; |
1009 | } | 1010 | } |