From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Peterson Date: Fri, 4 Dec 2015 14:12:14 -0500 (EST) Subject: [Cluster-devel] [GFS2 PATCH] GFS2: Don't do glock put on when inode creation fails In-Reply-To: <1126249001.28279759.1449256287316.JavaMail.zimbra@redhat.com> Message-ID: <163759332.28280223.1449256334928.JavaMail.zimbra@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Currently the error path of function gfs2_inode_lookup calls function gfs2_glock_put corresponding to an earlier call to gfs2_glock_get for the inode glock. That's wrong because the error path also calls iget_failed() which eventually calls iput, which eventually calls gfs2_evict_inode, which does another gfs2_glock_put. This double-put can cause the glock reference count to get off. Regards, Bob Peterson Red Hat File Systems --- Signed-off-by: Bob Peterson diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 1cc6d8e..148a4d5 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c @@ -197,7 +197,6 @@ fail_iopen: gfs2_glock_put(io_gl); fail_put: ip->i_gl->gl_object = NULL; - gfs2_glock_put(ip->i_gl); fail: iget_failed(inode); return ERR_PTR(error);