diff options
author | Weston Andros Adamson <dros@netapp.com> | 2013-08-13 16:37:35 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-09-05 10:48:30 -0400 |
commit | 8b5bee2e1b60a611b15b1862f55e60cc9f668324 (patch) | |
tree | 39e0ffc79b77f36412bce97d4d554c3bab0eac74 /fs/nfs | |
parent | fa940720ceff2d7b24b4898c51a440ab59f39a4d (diff) |
nfs4.1: Add SP4_MACH_CRED secinfo support
SECINFO and SECINFO_NONAME can use the machine credential.
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index cba486a18f1e..5c917c975432 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -5998,6 +5998,10 @@ static int _nfs4_proc_secinfo(struct inode *dir, const struct qstr *name, struct | |||
5998 | } | 5998 | } |
5999 | 5999 | ||
6000 | dprintk("NFS call secinfo %s\n", name->name); | 6000 | dprintk("NFS call secinfo %s\n", name->name); |
6001 | |||
6002 | nfs4_state_protect(NFS_SERVER(dir)->nfs_client, | ||
6003 | NFS_SP4_MACH_CRED_SECINFO, &clnt, &msg); | ||
6004 | |||
6001 | status = nfs4_call_sync(clnt, NFS_SERVER(dir), &msg, &args.seq_args, | 6005 | status = nfs4_call_sync(clnt, NFS_SERVER(dir), &msg, &args.seq_args, |
6002 | &res.seq_res, 0); | 6006 | &res.seq_res, 0); |
6003 | dprintk("NFS reply secinfo: %d\n", status); | 6007 | dprintk("NFS reply secinfo: %d\n", status); |
@@ -6137,7 +6141,9 @@ static const struct nfs41_state_protection nfs4_sp4_mach_cred_request = { | |||
6137 | }, | 6141 | }, |
6138 | .allow.u.words = { | 6142 | .allow.u.words = { |
6139 | [0] = 1 << (OP_CLOSE) | | 6143 | [0] = 1 << (OP_CLOSE) | |
6140 | 1 << (OP_LOCKU) | 6144 | 1 << (OP_LOCKU), |
6145 | [1] = 1 << (OP_SECINFO - 32) | | ||
6146 | 1 << (OP_SECINFO_NO_NAME - 32) | ||
6141 | } | 6147 | } |
6142 | }; | 6148 | }; |
6143 | 6149 | ||
@@ -6203,6 +6209,12 @@ static int nfs4_sp4_select_mode(struct nfs_client *clp, | |||
6203 | dfprintk(MOUNT, " cleanup mode enabled\n"); | 6209 | dfprintk(MOUNT, " cleanup mode enabled\n"); |
6204 | set_bit(NFS_SP4_MACH_CRED_CLEANUP, &clp->cl_sp4_flags); | 6210 | set_bit(NFS_SP4_MACH_CRED_CLEANUP, &clp->cl_sp4_flags); |
6205 | } | 6211 | } |
6212 | |||
6213 | if (test_bit(OP_SECINFO, sp->allow.u.longs) && | ||
6214 | test_bit(OP_SECINFO_NO_NAME, sp->allow.u.longs)) { | ||
6215 | dfprintk(MOUNT, " secinfo mode enabled\n"); | ||
6216 | set_bit(NFS_SP4_MACH_CRED_SECINFO, &clp->cl_sp4_flags); | ||
6217 | } | ||
6206 | } | 6218 | } |
6207 | 6219 | ||
6208 | return 0; | 6220 | return 0; |