aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfsd/export.c5
-rw-r--r--fs/nfsd/nfs4proc.c7
-rw-r--r--fs/nfsd/nfs4xdr.c2
-rw-r--r--include/linux/nfsd/export.h2
4 files changed, 7 insertions, 9 deletions
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index fbbbcc5a2fa3..af6abb2529c9 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -1235,8 +1235,7 @@ exp_find(struct auth_domain *clp, int fsid_type, u32 *fsidv,
1235 * export point with fsid==0 1235 * export point with fsid==0
1236 */ 1236 */
1237__be32 1237__be32
1238exp_pseudoroot(struct auth_domain *clp, struct svc_fh *fhp, 1238exp_pseudoroot(struct svc_rqst *rqstp, struct svc_fh *fhp)
1239 struct cache_req *creq)
1240{ 1239{
1241 struct svc_export *exp; 1240 struct svc_export *exp;
1242 __be32 rv; 1241 __be32 rv;
@@ -1244,7 +1243,7 @@ exp_pseudoroot(struct auth_domain *clp, struct svc_fh *fhp,
1244 1243
1245 mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL); 1244 mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL);
1246 1245
1247 exp = exp_find(clp, FSID_NUM, fsidv, creq); 1246 exp = exp_find(rqstp->rq_client, FSID_NUM, fsidv, rqstp->rq_chandle);
1248 if (PTR_ERR(exp) == -ENOENT) 1247 if (PTR_ERR(exp) == -ENOENT)
1249 return nfserr_perm; 1248 return nfserr_perm;
1250 if (IS_ERR(exp)) 1249 if (IS_ERR(exp))
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 8522729830db..a106e3be7c13 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -286,8 +286,7 @@ nfsd4_putrootfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
286 __be32 status; 286 __be32 status;
287 287
288 fh_put(&cstate->current_fh); 288 fh_put(&cstate->current_fh);
289 status = exp_pseudoroot(rqstp->rq_client, &cstate->current_fh, 289 status = exp_pseudoroot(rqstp, &cstate->current_fh);
290 &rqstp->rq_chandle);
291 return status; 290 return status;
292} 291}
293 292
@@ -474,8 +473,8 @@ nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
474 __be32 ret; 473 __be32 ret;
475 474
476 fh_init(&tmp_fh, NFS4_FHSIZE); 475 fh_init(&tmp_fh, NFS4_FHSIZE);
477 if((ret = exp_pseudoroot(rqstp->rq_client, &tmp_fh, 476 ret = exp_pseudoroot(rqstp, &tmp_fh);
478 &rqstp->rq_chandle)) != 0) 477 if (ret)
479 return ret; 478 return ret;
480 if (tmp_fh.fh_dentry == cstate->current_fh.fh_dentry) { 479 if (tmp_fh.fh_dentry == cstate->current_fh.fh_dentry) {
481 fh_put(&tmp_fh); 480 fh_put(&tmp_fh);
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 15809dfd88a5..b0bfbda375e1 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1296,7 +1296,7 @@ static char *nfsd4_path(struct svc_rqst *rqstp, struct svc_export *exp, __be32 *
1296 char *path, *rootpath; 1296 char *path, *rootpath;
1297 1297
1298 fh_init(&tmp_fh, NFS4_FHSIZE); 1298 fh_init(&tmp_fh, NFS4_FHSIZE);
1299 *stat = exp_pseudoroot(rqstp->rq_client, &tmp_fh, &rqstp->rq_chandle); 1299 *stat = exp_pseudoroot(rqstp, &tmp_fh);
1300 if (*stat) 1300 if (*stat)
1301 return NULL; 1301 return NULL;
1302 rootpath = tmp_fh.fh_export->ex_path; 1302 rootpath = tmp_fh.fh_export->ex_path;
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h
index 736f0eafcedf..5ed4f277eeac 100644
--- a/include/linux/nfsd/export.h
+++ b/include/linux/nfsd/export.h
@@ -135,7 +135,7 @@ struct svc_export * exp_parent(struct auth_domain *clp,
135 struct cache_req *reqp); 135 struct cache_req *reqp);
136int exp_rootfh(struct auth_domain *, 136int exp_rootfh(struct auth_domain *,
137 char *path, struct knfsd_fh *, int maxsize); 137 char *path, struct knfsd_fh *, int maxsize);
138__be32 exp_pseudoroot(struct auth_domain *, struct svc_fh *fhp, struct cache_req *creq); 138__be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *);
139__be32 nfserrno(int errno); 139__be32 nfserrno(int errno);
140 140
141extern struct cache_detail svc_export_cache; 141extern struct cache_detail svc_export_cache;