|
@@ -604,9 +604,7 @@ nfsd4_link(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
-static __be32
|
|
|
-nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
- void *arg)
|
|
|
+static __be32 nfsd4_do_lookupp(struct svc_rqst *rqstp, struct svc_fh *fh)
|
|
|
{
|
|
|
struct svc_fh tmp_fh;
|
|
|
__be32 ret;
|
|
@@ -615,13 +613,19 @@ nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
ret = exp_pseudoroot(rqstp, &tmp_fh);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
- if (tmp_fh.fh_dentry == cstate->current_fh.fh_dentry) {
|
|
|
+ if (tmp_fh.fh_dentry == fh->fh_dentry) {
|
|
|
fh_put(&tmp_fh);
|
|
|
return nfserr_noent;
|
|
|
}
|
|
|
fh_put(&tmp_fh);
|
|
|
- return nfsd_lookup(rqstp, &cstate->current_fh,
|
|
|
- "..", 2, &cstate->current_fh);
|
|
|
+ return nfsd_lookup(rqstp, fh, "..", 2, fh);
|
|
|
+}
|
|
|
+
|
|
|
+static __be32
|
|
|
+nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
+ void *arg)
|
|
|
+{
|
|
|
+ return nfsd4_do_lookupp(rqstp, &cstate->current_fh);
|
|
|
}
|
|
|
|
|
|
static __be32
|