X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fnfsd%2Fauth.c;h=8d35f45d9a2c05fcb856c798acad83038d616503;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=cfe9ce8816132373791a60e8be6e2ed1ed92f064;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c index cfe9ce881..8d35f45d9 100644 --- a/fs/nfsd/auth.c +++ b/fs/nfsd/auth.c @@ -9,6 +9,7 @@ #include #include #include +#include #define CAP_NFSD_MASK (CAP_FS_MASK|CAP_TO_MASK(CAP_SYS_RESOURCE)) @@ -42,18 +43,20 @@ int nfsd_setuser(struct svc_rqst *rqstp, struct svc_export *exp) } if (cred->cr_uid != (uid_t) -1) - current->fsuid = cred->cr_uid; + current->fsuid = INOXID_UID(1, cred->cr_uid, cred->cr_gid); else current->fsuid = exp->ex_anon_uid; if (cred->cr_gid != (gid_t) -1) - current->fsgid = cred->cr_gid; + current->fsgid = INOXID_GID(1, cred->cr_uid, cred->cr_gid); else current->fsgid = exp->ex_anon_gid; + + current->xid = INOXID_XID(1, cred->cr_uid, cred->cr_gid, 0); if (!cred->cr_group_info) return -ENOMEM; ret = set_current_groups(cred->cr_group_info); - if ((cred->cr_uid)) { + if (INOXID_UID(1, cred->cr_uid, cred->cr_gid)) { cap_t(current->cap_effective) &= ~CAP_NFSD_MASK; } else { cap_t(current->cap_effective) |= (CAP_NFSD_MASK &