diff options
author | J. Bruce Fields <bfields@redhat.com> | 2013-08-28 03:32:25 +0200 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-05-28 20:52:34 +0200 |
commit | ddd1ea56367202f6c99135cd59de7a97af4c4ffd (patch) | |
tree | 623a164aed98fb1d4a3d7ecc337acc88a5b27fec /fs/nfsd/idmap.h | |
parent | nfsd4: allow space for final error return (diff) | |
download | linux-ddd1ea56367202f6c99135cd59de7a97af4c4ffd.tar.xz linux-ddd1ea56367202f6c99135cd59de7a97af4c4ffd.zip |
nfsd4: use xdr_reserve_space in attribute encoding
This is a cosmetic change for now; no change in behavior.
Note we're just depending on xdr_reserve_space to do the bounds checking
for us, we're not really depending on its adjustment of iovec or xdr_buf
lengths yet, as those are fixed up by as necessary after the fact by
read-link operations and by nfs4svc_encode_compoundres. However we do
have to update xdr->iov on read-like operations to prevent
xdr_reserve_space from messing with the already-fixed-up length of the
the head.
When the attribute encoding fails partway through we have to undo the
length adjustments made so far. We do it manually for now, but later
patches will add an xdr_truncate_encode() helper to handle cases like
this.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/idmap.h')
-rw-r--r-- | fs/nfsd/idmap.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/nfsd/idmap.h b/fs/nfsd/idmap.h index 66e58db01936..a3f34900091f 100644 --- a/fs/nfsd/idmap.h +++ b/fs/nfsd/idmap.h @@ -56,7 +56,7 @@ static inline void nfsd_idmap_shutdown(struct net *net) __be32 nfsd_map_name_to_uid(struct svc_rqst *, const char *, size_t, kuid_t *); __be32 nfsd_map_name_to_gid(struct svc_rqst *, const char *, size_t, kgid_t *); -__be32 nfsd4_encode_user(struct svc_rqst *, kuid_t, __be32 **, int *); -__be32 nfsd4_encode_group(struct svc_rqst *, kgid_t, __be32 **, int *); +__be32 nfsd4_encode_user(struct xdr_stream *, struct svc_rqst *, kuid_t); +__be32 nfsd4_encode_group(struct xdr_stream *, struct svc_rqst *, kgid_t); #endif /* LINUX_NFSD_IDMAP_H */ |