* [RFC: 2.6.16 patch] return ENOENT from ext3_link when racing with unlink
@ 2007-11-13 10:05 Adrian Bunk
0 siblings, 0 replies; only message in thread
From: Adrian Bunk @ 2007-11-13 10:05 UTC (permalink / raw)
To: Eric Sandeen; +Cc: linux-ext4
It seems the commit below (I've removed the ext4 part that doesn't
apply) should also be included in the 2.6.16 branch, or do I miss
anything?
TIA
Adrian
commit 2988a7740dc0dd9a0cb56576e8fe1d777dff0db3
Author: Eric Sandeen <sandeen@redhat.com>
Date: Sat Feb 10 01:46:16 2007 -0800
[PATCH] return ENOENT from ext3_link when racing with unlink
Return -ENOENT from ext[34]_link if we've raced with unlink and i_nlink is
0. Doing otherwise has the potential to corrupt the orphan inode list,
because we'd wind up with an inode with a non-zero link count on the list,
and it will never get properly cleaned up & removed from the orphan list
before it is freed.
[akpm@osdl.org: build fix]
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
index 4df39c4..57402b5 100644
--- a/fs/ext3/namei.c
+++ b/fs/ext3/namei.c
@@ -2191,6 +2191,12 @@ static int ext3_link (struct dentry * old_dentry,
if (inode->i_nlink >= EXT3_LINK_MAX)
return -EMLINK;
+ /*
+ * Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing
+ * otherwise has the potential to corrupt the orphan inode list.
+ */
+ if (inode->i_nlink == 0)
+ return -ENOENT;
retry:
handle = ext3_journal_start(dir, EXT3_DATA_TRANS_BLOCKS(dir->i_sb) +
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2007-11-13 10:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-13 10:05 [RFC: 2.6.16 patch] return ENOENT from ext3_link when racing with unlink Adrian Bunk
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.