提交 458878a7 编写于 作者: E Eric W. Biederman

nfsd: Convert nfs3xdr to use kuids and kgids

When reading uids and gids off the wire convert them to kuids and
kgids.

When putting kuids and kgids onto the wire first convert them to uids
and gids the other side will understand.

Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
上级 e097258f
...@@ -105,12 +105,14 @@ decode_sattr3(__be32 *p, struct iattr *iap) ...@@ -105,12 +105,14 @@ decode_sattr3(__be32 *p, struct iattr *iap)
iap->ia_mode = ntohl(*p++); iap->ia_mode = ntohl(*p++);
} }
if (*p++) { if (*p++) {
iap->ia_valid |= ATTR_UID; iap->ia_uid = make_kuid(&init_user_ns, ntohl(*p++));
iap->ia_uid = ntohl(*p++); if (uid_valid(iap->ia_uid))
iap->ia_valid |= ATTR_UID;
} }
if (*p++) { if (*p++) {
iap->ia_valid |= ATTR_GID; iap->ia_gid = make_kgid(&init_user_ns, ntohl(*p++));
iap->ia_gid = ntohl(*p++); if (gid_valid(iap->ia_gid))
iap->ia_valid |= ATTR_GID;
} }
if (*p++) { if (*p++) {
u64 newsize; u64 newsize;
...@@ -167,8 +169,8 @@ encode_fattr3(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, ...@@ -167,8 +169,8 @@ encode_fattr3(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp,
*p++ = htonl(nfs3_ftypes[(stat->mode & S_IFMT) >> 12]); *p++ = htonl(nfs3_ftypes[(stat->mode & S_IFMT) >> 12]);
*p++ = htonl((u32) stat->mode); *p++ = htonl((u32) stat->mode);
*p++ = htonl((u32) stat->nlink); *p++ = htonl((u32) stat->nlink);
*p++ = htonl((u32) stat->uid); *p++ = htonl((u32) from_kuid(&init_user_ns, stat->uid));
*p++ = htonl((u32) stat->gid); *p++ = htonl((u32) from_kgid(&init_user_ns, stat->gid));
if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) { if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN); p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册