[Cluster-devel] [PATCH] gfs2: Initialize iopen glock holder for new inodes

Andreas Gruenbacher agruenba at redhat.com
Fri Jun 17 09:40:41 UTC 2016


From: Bob Peterson <rpeterso at redhat.com>

In gfs2_init_inode_once, initialize inode->i_iopen_gh.gh_gl to NULL:
otherwise, when gfs2_inode_lookup fails, the iopen glock holder can
remain unset and iget_failed can end up accessing random memory.

It turned out that patch "gfs2: Fix gfs2_lookup_by_inum lock inversion" made
gfs2_inode_lookup fail in this way more often, and we started to see this kind
of failure.

Signed-off-by: Andreas Gruenbacher <agruenba at redhat.com>
---
 fs/gfs2/main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index f99f8e9..615f675 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -45,6 +45,7 @@ static void gfs2_init_inode_once(void *foo)
 	memset(&ip->i_res, 0, sizeof(ip->i_res));
 	RB_CLEAR_NODE(&ip->i_res.rs_node);
 	ip->i_hash_cache = NULL;
+	ip->i_iopen_gh.gh_gl = NULL;
 }
 
 static void gfs2_init_glock_once(void *foo)
-- 
2.5.5




More information about the Cluster-devel mailing list