Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: J. Bruce Fields <bfields@redhat.com>

+5 -3
+5 -3
fs/nfsd/vfs.c
··· 1786 1786 rdentry = lookup_one_len(fname, dentry, flen); 1787 1787 host_err = PTR_ERR(rdentry); 1788 1788 if (IS_ERR(rdentry)) 1789 - goto out_nfserr; 1789 + goto out_drop_write; 1790 1790 1791 1791 if (d_really_is_negative(rdentry)) { 1792 1792 dput(rdentry); 1793 - err = nfserr_noent; 1794 - goto out; 1793 + host_err = -ENOENT; 1794 + goto out_drop_write; 1795 1795 } 1796 1796 1797 1797 if (!type) ··· 1805 1805 host_err = commit_metadata(fhp); 1806 1806 dput(rdentry); 1807 1807 1808 + out_drop_write: 1809 + fh_drop_write(fhp); 1808 1810 out_nfserr: 1809 1811 err = nfserrno(host_err); 1810 1812 out: