[Ocfs2-devel] [PATCH 1/1] OCFS2: add validation in ocfs2_get_dentry()

wangang wang wen.gang.wang at oracle.com
Mon Sep 22 01:18:27 PDT 2008


we need do more checking for validation in ocfs2_get_dentry().
1) OCFS2_INODE_DELETED flag
2) i_nlink

the patch is against 1.4 git.

Signed-off-by: Wengang wang <wen.gang.wang at oracle.com>
--
diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c
index 649f3c8..36ccf27 100644
--- a/fs/ocfs2/export.c
+++ b/fs/ocfs2/export.c
@@ -49,6 +49,7 @@ static struct dentry *ocfs2_get_dentry(struct super_block *sb, void *vobjp)
 {
 	struct ocfs2_inode_handle *handle = vobjp;
 	struct inode *inode;
+	struct ocfs2_inode_info *oi = NULL;
 	struct dentry *result;
 
 	mlog_entry("(0x%p, 0x%p)\n", sb, handle);
@@ -68,6 +69,17 @@ static struct dentry *ocfs2_get_dentry(struct super_block *sb, void *vobjp)
 		return ERR_PTR(-ESTALE);
 	}
 
+	oi = OCFS2_I(inode);
+
+	spin_lock(&oi->ip_lock);
+	if ((OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED)
+		|| !inode->i_nlink) {
+		spin_unlock(&oi->ip_lock);
+		iput(inode);
+		return ERR_PTR(-ESTALE);
+	}
+	spin_unlock(&oi->ip_lock);
+
 	result = d_alloc_anon(inode);
 
 	if (!result) {



More information about the Ocfs2-devel mailing list