From: NeilBrown <neilb@cse.unsw.edu.au>

The credentials (uid/gid) of a process are set when a filehandle is
verified.  Nfsv4 allows requests without an explicit filehandle (instead,
an implicit 'root' filehandle) so we much make sure the credentials are set
for these requests too.

From: "J. Bruce Fields" <bfields@fieldses.org>

From: Andros: added a call to nfsd_setuser in nfsd4_putrootfh so that nfsd
runs as the rpc->cred user.


---

 25-akpm/fs/nfsd/nfs4proc.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)

diff -puN fs/nfsd/nfs4proc.c~kNFSdv4-9-of-10-Set-credentials-properly-when-puutrootfh-is-used fs/nfsd/nfs4proc.c
--- 25/fs/nfsd/nfs4proc.c~kNFSdv4-9-of-10-Set-credentials-properly-when-puutrootfh-is-used	2004-04-07 19:39:57.125379344 -0700
+++ 25-akpm/fs/nfsd/nfs4proc.c	2004-04-07 19:39:57.129378736 -0700
@@ -194,9 +194,14 @@ nfsd4_putfh(struct svc_rqst *rqstp, stru
 static inline int
 nfsd4_putrootfh(struct svc_rqst *rqstp, struct svc_fh *current_fh)
 {
+	int status;
+
 	fh_put(current_fh);
-	return exp_pseudoroot(rqstp->rq_client, current_fh,
+	status = exp_pseudoroot(rqstp->rq_client, current_fh,
 			      &rqstp->rq_chandle);
+	if (!status)
+		status = nfsd_setuser(rqstp, current_fh->fh_export);
+	return status;
 }
 
 static inline int

_