diff options
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r-- | fs/nfsd/vfs.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 8d6b5c483ae1..0a18149ce963 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -192,15 +192,14 @@ nfsd_lookup(struct svc_rqst *rqstp, struct svc_fh *fhp, const char *name, | |||
192 | 192 | ||
193 | exp2 = exp_parent(exp->ex_client, mnt, dentry, | 193 | exp2 = exp_parent(exp->ex_client, mnt, dentry, |
194 | &rqstp->rq_chandle); | 194 | &rqstp->rq_chandle); |
195 | if (IS_ERR(exp2)) { | 195 | if (PTR_ERR(exp2) == -ENOENT) { |
196 | dput(dentry); | ||
197 | dentry = dget(dparent); | ||
198 | } else if (IS_ERR(exp2)) { | ||
196 | host_err = PTR_ERR(exp2); | 199 | host_err = PTR_ERR(exp2); |
197 | dput(dentry); | 200 | dput(dentry); |
198 | mntput(mnt); | 201 | mntput(mnt); |
199 | goto out_nfserr; | 202 | goto out_nfserr; |
200 | } | ||
201 | if (!exp2) { | ||
202 | dput(dentry); | ||
203 | dentry = dget(dparent); | ||
204 | } else { | 203 | } else { |
205 | exp_put(exp); | 204 | exp_put(exp); |
206 | exp = exp2; | 205 | exp = exp2; |