Commit 0ca0c9d7 authored by J. Bruce Fields's avatar J. Bruce Fields

nfsd: fh_drop_write in nfsd_unlink

fh_want_write() can now be called twice, but I'm also fixing up the
callers not to do that.

Other cases include setattr and create.
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 0b8f6262
...@@ -1786,12 +1786,12 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, ...@@ -1786,12 +1786,12 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
rdentry = lookup_one_len(fname, dentry, flen); rdentry = lookup_one_len(fname, dentry, flen);
host_err = PTR_ERR(rdentry); host_err = PTR_ERR(rdentry);
if (IS_ERR(rdentry)) if (IS_ERR(rdentry))
goto out_nfserr; goto out_drop_write;
if (d_really_is_negative(rdentry)) { if (d_really_is_negative(rdentry)) {
dput(rdentry); dput(rdentry);
err = nfserr_noent; host_err = -ENOENT;
goto out; goto out_drop_write;
} }
if (!type) if (!type)
...@@ -1805,6 +1805,8 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, ...@@ -1805,6 +1805,8 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
host_err = commit_metadata(fhp); host_err = commit_metadata(fhp);
dput(rdentry); dput(rdentry);
out_drop_write:
fh_drop_write(fhp);
out_nfserr: out_nfserr:
err = nfserrno(host_err); err = nfserrno(host_err);
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment