diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-30 13:18:43 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-30 13:18:43 -0500 |
commit | d9894c228b11273e720bb63ba120d1d326fe9d94 (patch) | |
tree | c9b91b716f281f5accf8860dfadb1ac95abf0090 /fs/nfsd/nfs4acl.c | |
parent | dfa19426160046770b3a38985042df9c9760a25a (diff) | |
parent | ed47b062ce9546fbe1eebf9da6937df4c5035372 (diff) |
Merge branch 'for-3.14' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields:
- Handle some loose ends from the vfs read delegation support.
(For example nfsd can stop breaking leases on its own in a
fewer places where it can now depend on the vfs to.)
- Make life a little easier for NFSv4-only configurations
(thanks to Kinglong Mee).
- Fix some gss-proxy problems (thanks Jeff Layton).
- miscellaneous bug fixes and cleanup
* 'for-3.14' of git://linux-nfs.org/~bfields/linux: (38 commits)
nfsd: consider CLAIM_FH when handing out delegation
nfsd4: fix delegation-unlink/rename race
nfsd4: delay setting current_fh in open
nfsd4: minor nfs4_setlease cleanup
gss_krb5: use lcm from kernel lib
nfsd4: decrease nfsd4_encode_fattr stack usage
nfsd: fix encode_entryplus_baggage stack usage
nfsd4: simplify xdr encoding of nfsv4 names
nfsd4: encode_rdattr_error cleanup
nfsd4: nfsd4_encode_fattr cleanup
minor svcauth_gss.c cleanup
nfsd4: better VERIFY comment
nfsd4: break only delegations when appropriate
NFSD: Fix a memory leak in nfsd4_create_session
sunrpc: get rid of use_gssp_lock
sunrpc: fix potential race between setting use_gss_proxy and the upcall rpc_clnt
sunrpc: don't wait for write before allowing reads from use-gss-proxy file
nfsd: get rid of unused function definition
Define op_iattr for nfsd4_open instead using macro
NFSD: fix compile warning without CONFIG_NFSD_V3
...
Diffstat (limited to 'fs/nfsd/nfs4acl.c')
-rw-r--r-- | fs/nfsd/nfs4acl.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c index 649ad7cf2204..d3a587144222 100644 --- a/fs/nfsd/nfs4acl.c +++ b/fs/nfsd/nfs4acl.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <linux/nfs_fs.h> | 38 | #include <linux/nfs_fs.h> |
39 | #include <linux/export.h> | 39 | #include <linux/export.h> |
40 | #include "nfsfh.h" | 40 | #include "nfsfh.h" |
41 | #include "nfsd.h" | ||
41 | #include "acl.h" | 42 | #include "acl.h" |
42 | #include "vfs.h" | 43 | #include "vfs.h" |
43 | 44 | ||
@@ -916,17 +917,22 @@ nfs4_acl_get_whotype(char *p, u32 len) | |||
916 | return NFS4_ACL_WHO_NAMED; | 917 | return NFS4_ACL_WHO_NAMED; |
917 | } | 918 | } |
918 | 919 | ||
919 | int | 920 | __be32 nfs4_acl_write_who(int who, __be32 **p, int *len) |
920 | nfs4_acl_write_who(int who, char *p) | ||
921 | { | 921 | { |
922 | int i; | 922 | int i; |
923 | int bytes; | ||
923 | 924 | ||
924 | for (i = 0; i < ARRAY_SIZE(s2t_map); i++) { | 925 | for (i = 0; i < ARRAY_SIZE(s2t_map); i++) { |
925 | if (s2t_map[i].type == who) { | 926 | if (s2t_map[i].type != who) |
926 | memcpy(p, s2t_map[i].string, s2t_map[i].stringlen); | 927 | continue; |
927 | return s2t_map[i].stringlen; | 928 | bytes = 4 + (XDR_QUADLEN(s2t_map[i].stringlen) << 2); |
928 | } | 929 | if (bytes > *len) |
930 | return nfserr_resource; | ||
931 | *p = xdr_encode_opaque(*p, s2t_map[i].string, | ||
932 | s2t_map[i].stringlen); | ||
933 | *len -= bytes; | ||
934 | return 0; | ||
929 | } | 935 | } |
930 | BUG(); | 936 | WARN_ON_ONCE(1); |
931 | return -1; | 937 | return -1; |
932 | } | 938 | } |