[PATCH 17/53] coda: don't d_drop() early.
NeilBrown <[email protected]> Fri, 13 Mar 2026 08:12:04 +1100
| Newsgroups | org.kernel.vger.ecryptfs,dev.linux.lists.gfs2,org.infradead.lists.linux-um,org.kernel.vger.ceph-devel,org.kernel.vger.linux-cifs,org.kernel.vger.linux-efi,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
From: NeilBrown <[email protected]> Proposed locking changes will mean that calling d_drop() could effectively unlock the name allowing a parallel lookup to proceed. For this reason it could only be called *after* the attempt to create a symlink (in this case) has completed (whether successfully or not). So move the d_drop() to after the venus_symlink() call. Signed-off-by: NeilBrown <[email protected]> --- fs/coda/dir.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/coda/dir.c b/fs/coda/dir.c index c64b8cd81568..70eb6042fdaa 100644 --- a/fs/coda/dir.c +++ b/fs/coda/dir.c @@ -244,13 +244,13 @@ static int coda_symlink(struct mnt_idmap *idmap, if (symlen > CODA_MAXPATHLEN) return -ENAMETOOLONG; + error = venus_symlink(dir_inode->i_sb, coda_i2f(dir_inode), name, len, + symname, symlen); /* - * This entry is now negative. Since we do not create + * This entry is still negative. Since we did not create * an inode for the entry we have to drop it. */ d_drop(de); - error = venus_symlink(dir_inode->i_sb, coda_i2f(dir_inode), name, len, - symname, symlen); /* mtime is no good anymore */ if (!error) -- 2.50.0.107.gf914562f5916.dirty