diff options
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a3a3455826aa..52c4f6daa649 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
| @@ -521,6 +521,7 @@ nfsd4_decode_access(struct nfsd4_compoundargs *argp, struct nfsd4_access *access | |||
| 521 | static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) | 521 | static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) |
| 522 | { | 522 | { |
| 523 | DECODE_HEAD; | 523 | DECODE_HEAD; |
| 524 | struct user_namespace *userns = nfsd_user_namespace(argp->rqstp); | ||
| 524 | u32 dummy, uid, gid; | 525 | u32 dummy, uid, gid; |
| 525 | char *machine_name; | 526 | char *machine_name; |
| 526 | int i; | 527 | int i; |
| @@ -563,8 +564,8 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_ | |||
| 563 | dummy = be32_to_cpup(p++); | 564 | dummy = be32_to_cpup(p++); |
| 564 | READ_BUF(dummy * 4); | 565 | READ_BUF(dummy * 4); |
| 565 | if (cbs->flavor == (u32)(-1)) { | 566 | if (cbs->flavor == (u32)(-1)) { |
| 566 | kuid_t kuid = make_kuid(&init_user_ns, uid); | 567 | kuid_t kuid = make_kuid(userns, uid); |
| 567 | kgid_t kgid = make_kgid(&init_user_ns, gid); | 568 | kgid_t kgid = make_kgid(userns, gid); |
| 568 | if (uid_valid(kuid) && gid_valid(kgid)) { | 569 | if (uid_valid(kuid) && gid_valid(kgid)) { |
| 569 | cbs->uid = kuid; | 570 | cbs->uid = kuid; |
| 570 | cbs->gid = kgid; | 571 | cbs->gid = kgid; |
