GFS2: Don't do glock put on when inode creation fails
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. Signed-off-by: Bob Peterson <rpeterso@redhat.com>
This commit is contained in:
parent
5ea31bc0a6
commit
6cc4b6e801
|
@ -198,7 +198,6 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type,
|
||||||
gfs2_glock_put(io_gl);
|
gfs2_glock_put(io_gl);
|
||||||
fail_put:
|
fail_put:
|
||||||
ip->i_gl->gl_object = NULL;
|
ip->i_gl->gl_object = NULL;
|
||||||
gfs2_glock_put(ip->i_gl);
|
|
||||||
fail:
|
fail:
|
||||||
iget_failed(inode);
|
iget_failed(inode);
|
||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
|
|
Loading…
Reference in New Issue